| imho.ws |
![]() |
|
|
|
# 1 |
|
Full Member
Регистрация: 02.10.2003
Пол: Male
Сообщения: 869
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Запрос 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, однако мне нужны ВСЕполя ![]() Кароче туплю Поможите плз ...
__________________
Если ты никого не боишься, значит ты самый страшный |
|
|
|
|
# 2 |
|
Full Member
Регистрация: 02.10.2003
Пол: Male
Сообщения: 869
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
т.е. на самом то деле задача несколько сложнее конечно
Есть 2 таблицы форума одна с постами "Посты" в которых есть поля "участник" + "тема" и тд и таблица "Темы" с их описаниями Задача: получить выборку тем, в которых отписывался "участник". При этом разумеется нужно получить лиш одну запись по теме, даже если участик там сделал 20 постов. Вот что я хочу получить Запрос вводящий всё подрят SELECT * FROM Посты LEFT JOIN Темы ON Посты.тема=Темы.ID_Темы ORDER BY ... Эта зараза выведет мне темы несколько раз, а нужно одну тему - однин раз
__________________
Если ты никого не боишься, значит ты самый страшный |
|
|
|
|
# 4 |
|
Full Member
Регистрация: 02.10.2003
Пол: Male
Сообщения: 869
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Ну тады вроде нельзя делать "SELECT *"
Полязапроса подвергшиеся нгруппировке -должны в таком случае являться результатом вычислений, т.е. функций... ![]() Например: MAX(field_1) А мне описание темы - нужно целиком .... добавлено через 3 минуты вообще собственно обсуждаемым форумом является IPB 2.1.7 Я хочу туда прикрутить функцию "Темы в которых писал отсортированные по последнему посту в них" Там вроде как должен быть очень простой запрос ...
__________________
Если ты никого не боишься, значит ты самый страшный Последний раз редактировалось metrim; 21.03.2008 в 14:55. |
|
|
|
|
# 5 |
|
::VIP::
Регистрация: 12.11.2002
Адрес: Nicosia, Cyprus
Сообщения: 1 285
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
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 |
|
|
|
|
# 7 |
|
Full Member
Регистрация: 02.10.2003
Пол: Male
Сообщения: 869
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Вот следующий тупой вопрос
Уже совсем про другое ![]() Вот допустим есть таблица. Там ест-но много полей. Есть поле timestamp со следующими значениями 1184256260 1184589319 1184840467 1186068453 1187019212 1188845910 1189698208 1197457131 и т.д. Запрос: SELECT * FROM news WHERE timestamp IN(1184840467,1187019212,1184589319) Как мне уговорить Мускуль выдавать результаты именно в таком порядке, как задано в параметре IN() ? а то он мне как честный выдаёт записи по тому порядку как они в базе лежат, т.е. 1184589319,1184840467,1187019212
__________________
Если ты никого не боишься, значит ты самый страшный |
|
|
|
|
# 8 |
|
мод
IMHO Кодер-200(6,7,8) Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Код:
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
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям! Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru Pahan-Hubbitus. Последний раз редактировалось Hubbitus; 06.04.2008 в 21:52. Причина: Указание версии MySQL |
|
|
|
|
# 10 |
|
Full Member
Регистрация: 02.10.2003
Пол: Male
Сообщения: 869
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Hubbitus, ну это как то дико сложно
![]() Проще уж просто загнать в цикл вытаскивание записей по одной из базы ... Мне то надо сделать простенький универсальный запрос Т.е. допустим приведённая таблица содержит статьи. Другая таблица содержит категории. В одном из полей таблицы_категорий приведён список статей из таблицы_статей, т.е. "1184840467,1187019212,1184589319". Их надо вывести ИМЕННО в том порядке, в котором они записаны в поле таблицы_категорий.
__________________
Если ты никого не боишься, значит ты самый страшный Последний раз редактировалось metrim; 07.04.2008 в 03:49. |
|
|
|
|
# 11 | |
|
::VIP::
Регистрация: 12.11.2002
Адрес: Nicosia, Cyprus
Сообщения: 1 285
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Цитата:
__________________
"If people only knew how hard I work to gain my mastery, it wouldn't seem so wonderful at all." Michelangelo Buonarroti |
|
|
|
|
|
# 12 |
|
Full Member
Регистрация: 02.10.2003
Пол: Male
Сообщения: 869
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Saruman, угу. Вроде как раз то что надо
"Ведь можете когда захотите" ![]() Осталось токма почитать по этой функции, нет ли каки косяков Благодарствую за помощь
__________________
Если ты никого не боишься, значит ты самый страшный |
|
|