这是我的疑问:
SELECT `tositetuotteet`.`id` ,
`tuote` ,
IFNULL( `tositetuotteet`.`hinta` , `tuotteet`.`hinta` ) AS `hinta` ,
`maara` ,
`tosite` ,
`tuotteet`.`nimike`,
`verokannat`.`verokanta`
FROM `tositetuotteet`
JOIN `tuotteet` ON `tuotteet`.`id` = `tositetuotteet`.`tuote`
JOIN `verokannat` ON `tuotteet`.`verokanta` = `verokannat`.`verokanta`
WHERE `tosite` = 1
你可以找到我的MySQL转储from there。
(SQLFiddle here。)
查询不返回任何内容。它应该返回
| id | tuote | hinta | maara | tosite | nimike | verokanta |
| 1 | 1 | 999.99 | 1 | 1 | Esimerkillinen ... | 24 |
有什么问题?我只是不明白。
P.S。如果您对此问题有更好的标题,请进行修改!
答案 0 :(得分:3)
您未连接正确的列
SELECT `tositetuotteet`.`id` ,
`tuote` ,
IFNULL( `tositetuotteet`.`hinta` , `tuotteet`.`hinta` ) AS `hinta` ,
`maara` ,
`tosite` ,
`tuotteet`.`nimike`,
`verokannat`.`verokanta`
FROM `tositetuotteet`
JOIN `tuotteet` ON `tuotteet`.`id` = `tositetuotteet`.`tuote`
JOIN `verokannat` ON `tuotteet`.`verokanta` = `verokannat`.`id`
WHERE `tosite` = 1
http://sqlfiddle.com/#!2/06192/11
您正在关联verokannat
。verokanta instead of
verokannat .
id
答案 1 :(得分:1)
我认为你应该链接到verokannat
的id,而不是它的verokanta值 - 试试:
SELECT `tositetuotteet`.`id` ,
`tuote` ,
IFNULL( `tositetuotteet`.`hinta` , `tuotteet`.`hinta` ) AS `hinta` ,
`maara` ,
`tosite` ,
`tuotteet`.`nimike`,
`verokannat`.`verokanta`
FROM `tositetuotteet`
JOIN `tuotteet` ON `tuotteet`.`id` = `tositetuotteet`.`tuote`
JOIN `verokannat` ON `tuotteet`.`verokanta` = `verokannat`.`id`
WHERE `tosite` = 1
SQLFiddle here。
答案 2 :(得分:0)
用JOIN
替换LEFT JOIN
就可以了。 verokanta
为null,因此JOIN不返回数据
SELECT `tositetuotteet`.`id` ,
`tuote` ,
IFNULL( `tositetuotteet`.`hinta` , `tuotteet`.`hinta` ) AS `hinta` ,
`maara` ,
`tosite` ,
`tuotteet`.`nimike`,
`verokannat`.`verokanta`
FROM `tositetuotteet`
LEFT JOIN `tuotteet` ON `tuotteet`.`id` = `tositetuotteet`.`tuote`
LEFT JOIN `verokannat` ON `tuotteet`.`verokanta` = `verokannat`.`verokanta`
WHERE `tosite` = 1;