Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.12.2018, 21:06   #1
AlNick
Пользователь
 
Регистрация: 15.08.2017
Сообщений: 17
По умолчанию Выбрать по одной записи для каждой категории

Есть таблица с сообщениями. Структура такая: id, текст, категория. Категория - это число, указывающее тему сообщения.
В скрипте есть список категорий, например 5, 9, 15. Нужно для всех этих категорий получить последнее сообщение (с максимальным id). Как сделать такую выборку одним запросом? Пытался для каждой категории написать отдельный запрос и объединить с помощью UNION. Но в запросах нужны операторы ORDER BY и LIMIT. А с ними запрос не работает. Подскажите, как сделать
AlNick вне форума Ответить с цитированием
Старый 07.12.2018, 22:06   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Код:
SELECT T1.категория,T1.id,T1.текст 
  FROM категория T1 INNER JOIN (SELECT MAX(id) AS ID FROM таблица GROUP BY категория) AS T2 ON T1.id=T2.id
  WHERE T1.категория IN (5,9,15) 
  //ORDER BY ...
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 08.12.2018, 13:16   #3
AlNick
Пользователь
 
Регистрация: 15.08.2017
Сообщений: 17
По умолчанию

У меня не работает такой запрос, видимо не так что-то пишу. Таблица называется mesages. Поля id, text, raz. Запрос получился такой
Код:
$query = "SELECT T1.raz, T1.id, T1.text
	FROM raz T1 INNER JOIN (SELECT MAX(id) AS ID FROM mesages GROUP BY raz)
	AS T2 ON T1.id=T2.id
	WHERE T1.raz IN (2, 5)";
Честно говоря, я даже не понял, как этот запрос должен работать. Можно немного пояснить?
AlNick вне форума Ответить с цитированием
Старый 08.12.2018, 13:21   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Ошибка? А текст ошибки, дословно
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 08.12.2018, 14:39   #5
AlNick
Пользователь
 
Регистрация: 15.08.2017
Сообщений: 17
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Ошибка? А текст ошибки, дословно
#1146 - Таблица 'mybase.raz' не существует
mybase - это название БД. A raz - это не таблица, а поле для категории в таблице mesages.
Видимо где-то псевдоним неправильно написан. А я с ними пока не научился работать, поэтому сам вряд ли исправлю

Последний раз редактировалось AlNick; 08.12.2018 в 14:57.
AlNick вне форума Ответить с цитированием
Старый 08.12.2018, 15:20   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Та у меня там описка )
Вместо
FROM категория T1
нужно
FROM таблица T1

Ну звиняй, я же запросик просто набросал, дык ты и сам должен думать, чуть-чуть )
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 08.12.2018, 15:49   #7
AlNick
Пользователь
 
Регистрация: 15.08.2017
Сообщений: 17
По умолчанию

Да просто из за этих псевдонимов я вообще не пойму это всё)). Теперь работает, спасибо)) Буду разбираться
AlNick вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужно чтобы при выборе в dbcombobox определенной категории, в dbGrid'е выбирались свойственные категории инструменты TTeso БД в Delphi 5 23.04.2017 22:31
Перемещение ОДНОЙ записи из одной таблицы в другую Vongud БД в Delphi 28 10.04.2015 21:47
свойство CheckListBox'а hint (для каждой записи) KORT Общие вопросы Delphi 4 23.01.2013 22:59
как вывести категории и записи к ним АлександрСмирнов PHP 2 13.08.2012 17:26
Отчет для каждой записи таблицы lilu1559 Microsoft Office Access 2 19.05.2010 18:16