Помогите составить ПРАВИЛЬНЫЙ запрос

Panchous

Павел
Помогите составить ПРАВИЛЬНЫЙ запрос

3 таблицы имеем:
Товары (t.id, t.name, t.pid),
КартинкиТоваров (i.id, i.tid, i.image, i.primary),
Производитель (p.id, p.name)

Связи:
Товары ---> Производители
Картинки ----> Товары

Как вывести список товаров с именами их производителей и картинкой (той, для которой стоит флаг primary = 1)???

ЛЮДИ!! ПОМОГИТЕ!!
 

ТопольМ

Новичок со стажем
Можить так:

SELECT t.id, t.name, p.name, i.image FROM
t,p,i WHERE t.id=i.tid AND t.pid=p.id AND i.primary=1
 

Panchous

Павел
ТопольМ, Вы забыли про таблицу с Производителями
(оттуда надо вытащить имя производителя)

А вообще, моя задача решаема?
Картинок для товара в общем случае может не быть...
 

ТопольМ

Новичок со стажем
Автор оригинала: Panchous
ТопольМ, Вы забыли про таблицу с Производителями
(оттуда надо вытащить имя производителя)

А вообще, моя задача решаема?
Картинок для товара в общем случае может не быть...
SELECT t.id, t.name, p.name, i.image FROM
t,p,i WHERE t.id=i.tid AND t.pid=p.id AND i.primary=1

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

-~{}~ 19.09.05 19:56:

хотя можно и join использовать

http://www.aspnetmania.com/Articles/Article/41.html

-~{}~ 19.09.05 20:24:

SELECT f.name, p.name, i.image_small
FROM catalog_furniture AS f
LEFT JOIN (producer AS p)
ON (f.producer_id=p.producer_id)
LEFT OUTER JOIN (catalog_furniture_image AS i)
ON (i.furniture_id=f.furniture_id AND i.is_primary=1 )
WHERE f.category_id=2
ORDER BY f.name ASC

о как! :)
 

Panchous

Павел
ЗАДАЧА РЕШЕНА:
------------------------
[sql]
SELECT f.name, p.name, i.image
FROM catalog_furniture AS f
LEFT JOIN (producer AS p) ON (f.producer_id=p.producer_id)
LEFT OUTER JOIN (catalog_furniture_image AS i) ON (i.furniture_id=f.furniture_id AND i.is_primary=1)
WHERE f.category_id=2
ORDER BY f.name ASC
[/sql]
 
Сверху