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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.01.2009, 16:39   #1
iankov
Форумчанин
 
Регистрация: 04.01.2009
Сообщений: 188
По умолчанию Помогите создать запрос mysql

Есть 2 таблицы. albums(id, title, published) и songs(id, title, published, album).
Реально ли одним запросом вытянуть все альбомы из таблицы albums + вытянуть поле id из songs где songs.album = albums.id?

То что я сделал своим запросом вытягивает все альбомы, только альбомы повторяются, если в нем найдено больше 1й песни. А мне нужно чтобы вытягивалась только одна копия альбома и к нему же id песенки с альбома

Код:
SELECT a.title, s.id FROM albums AS a, songs AS s WHERE a.published='1' AND s.published='1' AND a.id=s.album ORDER BY a.created DESC"
iankov вне форума Ответить с цитированием
Старый 07.01.2009, 16:40   #2
maladoy
delphi-ст!
Форумчанин
 
Аватар для maladoy
 
Регистрация: 02.01.2009
Сообщений: 825
По умолчанию

группировку по albums.id сделай!!!!\
вступлю в команду разработчиков ПО на Delphi
maladoy вне форума Ответить с цитированием
Старый 07.01.2009, 16:44   #3
_Engine_
Форумчанин
 
Регистрация: 29.06.2008
Сообщений: 603
По умолчанию

не надо группировку, надо использовать left join, например.
_Engine_ вне форума Ответить с цитированием
Старый 07.01.2009, 16:47   #4
iankov
Форумчанин
 
Регистрация: 04.01.2009
Сообщений: 188
По умолчанию

поподробней можно про группировку. А насчет left join так?
SELECT a.title, s.id FROM albums AS a LEFT JOIN songs AS s ON a.id=s.album WHERE a.published='1' AND s.published='1' ORDER BY a.created DESC"
iankov вне форума Ответить с цитированием
Старый 07.01.2009, 16:48   #5
iankov
Форумчанин
 
Регистрация: 04.01.2009
Сообщений: 188
По умолчанию

Про LEFT JOIN я вообще без рамы как оно работает, могу только догадываться =)
iankov вне форума Ответить с цитированием
Старый 07.01.2009, 16:50   #6
_Engine_
Форумчанин
 
Регистрация: 29.06.2008
Сообщений: 603
По умолчанию

с джойном правильно.
_Engine_ вне форума Ответить с цитированием
Старый 07.01.2009, 16:55   #7
iankov
Форумчанин
 
Регистрация: 04.01.2009
Сообщений: 188
По умолчанию

Результат вывода с LEFT JOIN и без него абсолютно одинаковы. Могу на данный момент справится только через 2 запроса, но хотелось бы одним =)
SELECT title, id FROM albums WHERE published='1'
и следующим запросом уже имея id c предыдущего запроса($id) сделать так:
SELECT id FROM songs WHERE published='1' AND album='$id'
Вот скомпонировать бы эти 2 запроса в один....
iankov вне форума Ответить с цитированием
Старый 07.01.2009, 17:34   #8
iankov
Форумчанин
 
Регистрация: 04.01.2009
Сообщений: 188
По умолчанию

Ура, после чтения документации по GROUP BY нашел решение в виде
Код:
SELECT a.title, s.id FROM albums AS a, songs AS s  WHERE a.published='1' AND s.published='1' AND a.id=s.album GROUP BY a.title ORDER BY a.created DESC
Всем спасибо за подсказки =)
iankov вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите создать SQL запрос Rain9 SQL, базы данных 5 25.11.2008 08:54
Создать веб запрос Shavminator Microsoft Office Excel 7 26.09.2008 16:33
Как создать перекресный запрос в QR??? Tanuska___:) БД в Delphi 0 22.09.2008 11:13
запрос ссылается на несвязанный с ним запрос kolebatel SQL, базы данных 0 11.06.2008 12:50
Помогите, запрос на добавление DisaMS Microsoft Office Access 5 10.06.2008 12:39