Малко помощ за MySQL - извличане на само един елемент от много редове

madseason

Active Member
Здравейте,

Имам следните таблици:
Products:
id name
--------------
3 kafe
4 kola
6 morkovi
7 banan

Pictures
id_prod file
------------------------
3 hg7943.jpg
3 ss7422.jpg
3 de5432.jpg
7 zxs417.jpg
7 o2d712.jpg

Целта ми е да извлеча само по една картинка от продукт. А за продукти, които нямат гкартинка да си е null. Резултата, който искам да постигна:

id name file
---------------------------
3 kafe hg7943.jpg
4 kola [null]
6 morkovi [null]
7 banan zxs417.jpg

Как може да стане това с една заявка към базата данни. Сигурен съм, че не е някаква сложнотия, но явно съм блокирал и не ми хрумва как да го направя. А въобще не ми се впуска в глупави цикли, като foreach на id-дата и LIMIT 1.
Предварително благодаря за идеите!
 
От: Малко помощ за MySQL - извличане на само един елемент от много редове

Нещо такова ти трябва. За жалост няма как да ти го изтествам и дебъгна, защото нямам под ръка базата ти :)
PHP:
select Products.id, Products.name , Pictures.id_prod,  Pictures.file from Products left join Pictures on (Products.id = Pictures.id_prod) where Pictures.file != '' limit 1
 
От: От: Малко помощ за MySQL - извличане на само един елемент от много редове

Нещо такова ти трябва. За жалост няма как да ти го изтествам и дебъгна, защото нямам под ръка базата ти :)
PHP:
select Products.id, Products.name , Pictures.id_prod,  Pictures.file from Products left join Pictures on (Products.id = Pictures.id_prod) where Pictures.file != '' limit 1
Не, не ми трябва да изкарам само един резултат (LIMIT 1). Условието ми е съвсем различно. Не ми трябва и да филтрирам (where Pictures.file != ''), защото това премахва всички редове без картинки.
 
От: От: Малко помощ за MySQL - извличане на само един елемент от много редове

Значи аз нещо не мога да схвана какво искаш. Искаш да изкараш всички картинки за даден продукт ли? Ако е така няма как да е с една заявка.
Не, не ми трябва да изкарам само един резултат (LIMIT 1). Условието ми е съвсем различно. Не ми трябва и да филтрирам (where Pictures.file != ''), защото това премахва всички редове без картинки.
 
От: Малко помощ за MySQL - извличане на само един елемент от много редове

SELECT
products.id,
products.`name`,
pictures.id_prod,
pictures.file
FROM
pictures
RIGHT JOIN products ON products.id = pictures.id_prod
GROUP BY
products.id
 
От: Малко помощ за MySQL - извличане на само един елемент от много редове

@klk, точно това имах предвид! Мерси пич!
Липсвало ми е: GROUP BY products.id
С удоволствие ти цъкнах един реп. Жив и здрав!
 
От: Малко помощ за MySQL - извличане на само един елемент от много редове

направо се кефя на програмистите, като музикантите са пишат си нотите:roll:
 
От: Малко помощ за MySQL - извличане на само един елемент от много редове

You have given out too much Reputation in the last 24 hours, try again later. :)
направо се кефя на програмистите, като музикантите са пишат си нотите:roll:
 

Горе