MySQL查询 - 有什么问题?

时间:2013-06-19 18:10:07

标签: mysql

这是我的疑问:

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。如果您对此问题有更好的标题,请进行修改!

3 个答案:

答案 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

您正在关联verokannatverokanta 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;