Составление запроса

Markus

Новичок
Составление запроса

Есть три таблицы
_albums - альбомы
_artists - артисты
_ar2ar - связка альбомов и артистов по id

Как сделать запрос
Выбрать из _albums его номер _albums.id, и название _albums.name
узнается _ar2ar.artist_id (id артиста) где _ar2ar.album_id=_albums.id
и выбирается _artists.name где _artists.id=_ar2ar.artist_id

И вывести название альбома и его артиста

Знаю что надо использовать LEFT JOIN но как запрос сделать не могу сообразить

-~{}~ 11.03.05 21:10:

хотя и могу ошибаться
 

alexhemp

Новичок
вестимо нужно определиться что известно, и что нужно вывести.

Например все альбомы определенного артиста.

3 таблицы - это потому что у одного альбома может быть несколько авторов?

Вестимо тогда таблицу-связку нужно 2 раза поджойнить с разными алиасами
 

Markus

Новичок
Да, все правильно, просто нужно вывести 12 альбомов к примеру (LIMIT 12) с названиями их артистов через связку.

Можно конечно сделать в три запроса но это как то не очень, хочу понять как делать это одним запросом если это возможно. Не зря же JOIN придумали.
как в примере запрос будет выглядеть?

-~{}~ 11.03.05 21:31:

3 таблицы - это потому что у одного альбома может быть несколько авторов?
Видимо наоборот, у одного артиста несколько альбомов

-~{}~ 11.03.05 21:51:

alexhemp

как поджоинить?

-~{}~ 11.03.05 22:28:

Люди подскажите пожалуйста, встала работа
 

SelenIT

IT-лунатик :)
Имхо, три таблицы - для отношения "многие ко многим". А для отношения "один ко многим", опять же имхо, достаточно добавить в таблицу альбомов поле artist_id...
 

Markus

Новичок
Пробую так, не пашет

$result=mysql_query("
SELECT _albums.id,_al2ar.artist_id AS ar_id, _artists.name FROM _albums,_al2ar,_artists WHERE _al2ar.album_id=_albums.id AND _artists.id=ar_id ORDER BY _albums.id DESC LIMIT 12
");
 

Markus

Новичок
Получилось достигнуть желаемого такми запросом

PHP:
$result=mysql_query("
SELECT _albums.id, _albums.title, _al2ar.artist_id, _artists.disp_name
FROM _albums,_al2ar,_artists 
WHERE _al2ar.album_id=_albums.id AND _artists.id=_al2ar.artist_id 
ORDER BY _albums.id DESC LIMIT 12
");
-~{}~ 12.03.05 00:17:

SelenIT

С алиясами почему то не получается
 

Sluggard

Новичок
Пробую так, не пашет

$result=mysql_query("
SELECT _albums.id,_al2ar.artist_id AS ar_id, _artists.name FROM _albums,_al2ar,_artists WHERE _al2ar.album_id=_albums.id AND _artists.id=ar_id ORDER BY _albums.id DESC LIMIT 12
");
Вместо _artists.id=ar_id пиши _artists.id=_al2ar.artist_id
 
Сверху