imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Веб-мастеру > Веб-программирование
Опции темы
Старый 21.03.2008, 04:31     # 1
metrim
Full Member
 
Регистрация: 02.10.2003
Пол: Male
Сообщения: 869

metrim Популярный человек на этом форумеmetrim Популярный человек на этом форумеmetrim Популярный человек на этом форумеmetrim Популярный человек на этом форумеmetrim Популярный человек на этом форумеmetrim Популярный человек на этом форумеmetrim Популярный человек на этом форумеmetrim Популярный человек на этом форуме
Запрос MySQL. Поможите совсем запутался

Что то совсем у меня башня не варит
Задача в общем то простая, а сообразить - не могу

Допустим есть таблица типа
1|2|3|4|5|

1|яблоко|Вася|что-то|75|
2|вишня|Коля|нечто|75|
3|кокос|Вася|хрень|75|
4|вишня|Оля|нечто|75|
5|вишня|Коля|нечто|75|
6|вишня|Оля|нечто|88|
7|вишня|Оля|нечто|75|
8|кокос|Вася|хрень|96|

Задача плучить результат вида:
1|яблоко|Вася|что-то|75|
2|вишня|Коля|нечто|75|
4|вишня|Оля|нечто|75|

Как сделать выборку по полю пять - понятно (WHERE 5=75)
А вот как заставить при этом выбирать только по одной записи из поля 3
Ежли б мне было нужно только одно поле 3, то можно было бы написвтть DISTINCT 3, однако мне нужны ВСЕполя

Кароче туплю
Поможите плз ...
__________________
Если ты никого не боишься, значит ты самый страшный
metrim вне форума  
Старый 21.03.2008, 05:32     # 2
metrim
Full Member
 
Регистрация: 02.10.2003
Пол: Male
Сообщения: 869

metrim Популярный человек на этом форумеmetrim Популярный человек на этом форумеmetrim Популярный человек на этом форумеmetrim Популярный человек на этом форумеmetrim Популярный человек на этом форумеmetrim Популярный человек на этом форумеmetrim Популярный человек на этом форумеmetrim Популярный человек на этом форуме
т.е. на самом то деле задача несколько сложнее конечно
Есть 2 таблицы форума одна с постами "Посты" в которых есть поля "участник" + "тема" и тд и таблица "Темы" с их описаниями
Задача: получить выборку тем, в которых отписывался "участник". При этом разумеется нужно получить лиш одну запись по теме, даже если участик там сделал 20 постов.
Вот что я хочу получить

Запрос вводящий всё подрят
SELECT * FROM Посты LEFT JOIN Темы ON Посты.тема=Темы.ID_Темы ORDER BY ...

Эта зараза выведет мне темы несколько раз, а нужно одну тему - однин раз
__________________
Если ты никого не боишься, значит ты самый страшный
metrim вне форума  
Старый 21.03.2008, 11:27     # 3
Saruman
::VIP::
 
Аватар для Saruman
 
Регистрация: 12.11.2002
Адрес: Nicosia, Cyprus
Сообщения: 1 285

Saruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman Гуру
GROUP BY field3
GROUP BY ID_темы
__________________
"If people only knew how hard I work to gain my mastery, it wouldn't seem so wonderful at all." Michelangelo Buonarroti
Saruman вне форума  
Старый 21.03.2008, 14:38     # 4
metrim
Full Member
 
Регистрация: 02.10.2003
Пол: Male
Сообщения: 869

metrim Популярный человек на этом форумеmetrim Популярный человек на этом форумеmetrim Популярный человек на этом форумеmetrim Популярный человек на этом форумеmetrim Популярный человек на этом форумеmetrim Популярный человек на этом форумеmetrim Популярный человек на этом форумеmetrim Популярный человек на этом форуме
Цитата:
Сообщение от Saruman Посмотреть сообщение
GROUP BY field3
GROUP BY ID_темы
Ну тады вроде нельзя делать "SELECT *"
Полязапроса подвергшиеся нгруппировке -должны в таком случае являться результатом вычислений, т.е. функций...
Например: MAX(field_1)
А мне описание темы - нужно целиком ....

добавлено через 3 минуты
вообще собственно обсуждаемым форумом является IPB 2.1.7
Я хочу туда прикрутить функцию "Темы в которых писал отсортированные по последнему посту в них"
Там вроде как должен быть очень простой запрос ...
__________________
Если ты никого не боишься, значит ты самый страшный

Последний раз редактировалось metrim; 21.03.2008 в 14:55.
metrim вне форума  
Старый 21.03.2008, 17:57     # 5
Saruman
::VIP::
 
Аватар для Saruman
 
Регистрация: 12.11.2002
Адрес: Nicosia, Cyprus
Сообщения: 1 285

Saruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman Гуру
Цитата:
Сообщение от metrim Посмотреть сообщение
Ну тады вроде нельзя делать "SELECT *"
Полязапроса подвергшиеся нгруппировке -должны в таком случае являться результатом вычислений, т.е. функций...
Например: MAX(field_1)
А мне описание темы - нужно целиком ....
mysql должен понимать, что ты хочешь достать. Соответственно, или аггрегирующие функции на нужных полях (типа MAX), или перечисляй все поля в GROUP BY. Или же приводи конкретный пример таблицы с конкретными запросами, результатами и проблемами.
__________________
"If people only knew how hard I work to gain my mastery, it wouldn't seem so wonderful at all." Michelangelo Buonarroti
Saruman вне форума  
Старый 22.03.2008, 11:38     # 6
rnbox
Guest
 
Сообщения: n/a

select t.* from `topics` t, (select max(`date`), `topic_id` from `posts` where `user_id`='$user_id' group_by `topic_id` having max(`date`)) q where t.`id`=q.`topic_id` order by q.`date`
 
Старый 06.04.2008, 01:58     # 7
metrim
Full Member
 
Регистрация: 02.10.2003
Пол: Male
Сообщения: 869

metrim Популярный человек на этом форумеmetrim Популярный человек на этом форумеmetrim Популярный человек на этом форумеmetrim Популярный человек на этом форумеmetrim Популярный человек на этом форумеmetrim Популярный человек на этом форумеmetrim Популярный человек на этом форумеmetrim Популярный человек на этом форуме
Вот следующий тупой вопрос
Уже совсем про другое

Вот допустим есть таблица. Там ест-но много полей. Есть поле timestamp со следующими значениями
1184256260
1184589319
1184840467
1186068453
1187019212
1188845910
1189698208
1197457131
и т.д.

Запрос:
SELECT * FROM news WHERE timestamp IN(1184840467,1187019212,1184589319)
Как мне уговорить Мускуль выдавать результаты именно в таком порядке, как задано в параметре IN() ?
а то он мне как честный выдаёт записи по тому порядку как они в базе лежат, т.е. 1184589319,1184840467,1187019212
__________________
Если ты никого не боишься, значит ты самый страшный
metrim вне форума  
Старый 06.04.2008, 21:52     # 8
Hubbitus
мод
IMHO Кодер-200(6,7,8)
 
Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734

Hubbitus Бог с наворотамиHubbitus Бог с наворотами
Hubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотами
Код:
SELECT *
FROM testINorder t INNER JOIN
	(
	SELECT 1184840467 as Ts, 1 as OrderCol
	UNION ALL
	SELECT 1187019212, 2
	UNION ALL
	SELECT 1184589319, 3
	) InOrdTable ON (t.IntTstmp = InOrdTable.Ts)
ORDER BY OrderCol
Разумеется для этого требуется MySQL поддерживающая подзапросы, то есть с 5.0 вроде бы.
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям!

Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru
Pahan-Hubbitus.

Последний раз редактировалось Hubbitus; 06.04.2008 в 21:52. Причина: Указание версии MySQL
Hubbitus вне форума  
Старый 06.04.2008, 23:00     # 9
Saruman
::VIP::
 
Аватар для Saruman
 
Регистрация: 12.11.2002
Адрес: Nicosia, Cyprus
Сообщения: 1 285

Saruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman Гуру
Цитата:
Сообщение от Hubbitus Посмотреть сообщение
MySQL поддерживающая подзапросы, то есть с 5.0 вроде бы.
с 4.1, если точнее
__________________
"If people only knew how hard I work to gain my mastery, it wouldn't seem so wonderful at all." Michelangelo Buonarroti
Saruman вне форума  
Старый 07.04.2008, 03:35     # 10
metrim
Full Member
 
Регистрация: 02.10.2003
Пол: Male
Сообщения: 869

metrim Популярный человек на этом форумеmetrim Популярный человек на этом форумеmetrim Популярный человек на этом форумеmetrim Популярный человек на этом форумеmetrim Популярный человек на этом форумеmetrim Популярный человек на этом форумеmetrim Популярный человек на этом форумеmetrim Популярный человек на этом форуме
Hubbitus, ну это как то дико сложно
Проще уж просто загнать в цикл вытаскивание записей по одной из базы ...
Мне то надо сделать простенький универсальный запрос

Т.е. допустим приведённая таблица содержит статьи.
Другая таблица содержит категории. В одном из полей таблицы_категорий приведён список статей из таблицы_статей, т.е. "1184840467,1187019212,1184589319".
Их надо вывести ИМЕННО в том порядке, в котором они записаны в поле таблицы_категорий.
__________________
Если ты никого не боишься, значит ты самый страшный

Последний раз редактировалось metrim; 07.04.2008 в 03:49.
metrim вне форума  
Старый 07.04.2008, 09:21     # 11
Saruman
::VIP::
 
Аватар для Saruman
 
Регистрация: 12.11.2002
Адрес: Nicosia, Cyprus
Сообщения: 1 285

Saruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman ГуруSaruman Гуру
Цитата:
Сообщение от metrim Посмотреть сообщение
В одном из полей таблицы_категорий приведён список статей из таблицы_статей, т.е. "1184840467,1187019212,1184589319".
Их надо вывести ИМЕННО в том порядке, в котором они записаны в поле таблицы_категорий.
SELECT * FROM mytable ORDER BY FIELD(myfield, "First", "Second", "Third", ....etc...)
__________________
"If people only knew how hard I work to gain my mastery, it wouldn't seem so wonderful at all." Michelangelo Buonarroti
Saruman вне форума  
Старый 07.04.2008, 18:29     # 12
metrim
Full Member
 
Регистрация: 02.10.2003
Пол: Male
Сообщения: 869

metrim Популярный человек на этом форумеmetrim Популярный человек на этом форумеmetrim Популярный человек на этом форумеmetrim Популярный человек на этом форумеmetrim Популярный человек на этом форумеmetrim Популярный человек на этом форумеmetrim Популярный человек на этом форумеmetrim Популярный человек на этом форуме
Saruman, угу. Вроде как раз то что надо
"Ведь можете когда захотите"
Осталось токма почитать по этой функции, нет ли каки косяков
Благодарствую за помощь
__________________
Если ты никого не боишься, значит ты самый страшный
metrim вне форума  


Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 10:43.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.