Mam drobny problem z relacją. Poniżej przedstawiam strukturę
Kod
//Tabela SQL_NAME_IMAGETOPRODUCT
----------------------
| id | imageid | productid
----------------------
//Tabela SQL_NAME_IMAGE
----------------------
| id | name | file
----------------------
//Tabela SQL_NAME_SHOPPRODUCT
----------------------
| id | name
----------------------
----------------------
| id | imageid | productid
----------------------
//Tabela SQL_NAME_IMAGE
----------------------
| id | name | file
----------------------
//Tabela SQL_NAME_SHOPPRODUCT
----------------------
| id | name
----------------------
Powyżej przedstawiłem przykładową strukturę...
Teraz chciałem wyświetlić produkty przypisując im obrazy. ten produkt który posiada obraz zwraca jego nazwę jeżeli nie posiada zapytanie zwraca NULL.
Błąd polega na tym że w momencie gdy dany produkt ma przypisany obraz zapytanie informuje mnie że produkt nie posiada żadnych obrazów i zwraca puste pole
Zapytanie które wykorzystuje
Kod
SELECT
`t1`.`id`,
`t1`.`categoryid`,
`t1`.`name`,
`t1`.`shorttext`,
`t1`.`price`,
`t1`.`discount`,
IF(`t1`.`discount` IS NOT NULL,`t1`.`price`-`t1`.`discount`,NULL) as `discounted`,
IF(`t2`.`id` = `t3`.`imageid`,`t2`.`name`,NULL) as `img`
FROM
`".SQL_NAME_SHOPPRODUCT."` `t1`
LEFT JOIN
`".SQL_NAME_IMAGE."` `t2`,
`".SQL_NAME_IMAGETOPRODUCT."` `t3`
ON
`t1`.`id` = `t3`.`productid` AND
`t2`.`id` = `t3`.`imageid`
WHERE
`t1`.`publish` = '1'
GROUP BY
`t1`.`id`
ORDER BY RAND()
LIMIT $limit
`t1`.`id`,
`t1`.`categoryid`,
`t1`.`name`,
`t1`.`shorttext`,
`t1`.`price`,
`t1`.`discount`,
IF(`t1`.`discount` IS NOT NULL,`t1`.`price`-`t1`.`discount`,NULL) as `discounted`,
IF(`t2`.`id` = `t3`.`imageid`,`t2`.`name`,NULL) as `img`
FROM
`".SQL_NAME_SHOPPRODUCT."` `t1`
LEFT JOIN
`".SQL_NAME_IMAGE."` `t2`,
`".SQL_NAME_IMAGETOPRODUCT."` `t3`
ON
`t1`.`id` = `t3`.`productid` AND
`t2`.`id` = `t3`.`imageid`
WHERE
`t1`.`publish` = '1'
GROUP BY
`t1`.`id`
ORDER BY RAND()
LIMIT $limit