2013-06-19 45 views
1

這是我的查詢: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.如果你知道這個問題更好的標題,去編輯!

+1

+1給一個完整的轉儲與 – exussum

+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

+0

哇,那是一點「我很粗心」 - 謝謝。 –

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; 
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

+0

我只給你upvote。我無法接受這兩個答案。 :-( –

+0

@PetjaTouru:upvote很好(雖然我確實先發布了我的答案 - 大約10秒!) –