1

这是我的查询:

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 转储。

(这里是 SQLFiddle 。)

查询不返回任何内容。它应该返回

| id | tuote | hinta  | maara | tosite | nimike             | verokanta |
| 1  | 1     | 999.99 | 1     | 1      | Esimerkillinen ... | 24        |

怎么了?我只是不明白。

PS如果您知道此问题的更好标题,请进行编辑!

4

3 回答 3

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

你正在连接 verokannatverokanta instead of验证.

于 2013-06-19T18:20:52.770 回答
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在这里

于 2013-06-19T18:20:14.877 回答
0

替换JOINLEFT JOIN诀窍。verokanta为空,所以 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;
于 2013-06-19T18:19:51.550 回答