Помогите с запросом.

melo

однажды
Помогите с запросом.

Есть две таблицы.
Объект
id|title|notice|price
КартинкиОбъекта
id|object_id|small_image|medium_image|large_image

Одному объекту могут соответствовать несколько картинок в таблице КартинкиОбъекта, но при не детальном показе объекта надо показывать только одну картинку. Как можно выбрать 1 запросом запись из таблицы Объект и первую запись из таблицы КартинкиОбъекта связанные по object_id?

-~{}~ 24.03.09 10:55:

У меня выходит такой запрос:
[SQL]
SELECT o.id AS id,
o.title AS title,
o.notice AS notice,
o.price AS price,
(SELECT op.large_image FROM object_picture AS op WHERE op.object_id = o.id LIMIT 1) AS large_image
FROM object AS o
WHERE o.best = '1'
[/SQL]
это нормально?
 

Potaevsky

Новичок
select A.*, B.object_id [и таким же макаром все что надо из B] from Объект AS A LEFT JOIN КартинкиОбъекта AS B ON A.id=B.object_id WHERE <условие> GROUP BY id

Если картинки нет - то во всех полях B.* будет null. Если нужно не показывать запись без картинок - т.е. чтобы ничего не выбиралось в этом случае - меняем LEFT JOIN на INNER JOIN

-~{}~ 24.03.09 10:59:

У меня выходит такой запрос:
[SQL]
SELECT o.id AS id,
o.title AS title,
o.notice AS notice,
o.price AS price,
(SELECT op.large_image FROM object_picture AS op WHERE op.object_id = o.id LIMIT 1) AS large_image
FROM object AS o
WHERE o.best = '1'
[/SQL]
это нормально?
Можно и таким макаром, если нужно одно поле - по мануалам на логическом уровне для MySQL это одно и то же. Правда порой ток по мануалам :)
 
Сверху