簡體   English   中英

JOIN三個MySQL表

[英]JOIN three MySQL table

我得到了三張桌子:

三桌

== liste_caracteristiques
|------
|------
|//**idCarac**//|int(11)|Non|
|//**refproduit**//|int(11)|Non|
|valeur|varchar(255)|Oui|NULL
|0|4942|Windows
|0|8149|Android
|1|9980|300
|1|10300|1100
|1|10316|149.5
|2|4942|7
|2|8149|12
|2|9980|15cm
|2|10300|4cm
|2|10316|8.3cm

== caracteristiques
|------
|------
|//**idCarac**//|int(11)|Non|
|libelleCarac|varchar(255)|Oui|NULL
|0|Système d'exploitation
|1|Poids
|2|Screen size
|3|ATEX
|4|Zone 0
|5|Zone 1
|6|Zone 2

== types_carac
|------
|------
|//**idTypeProd**//|int(11)|Non|
|//**idCarac**//|int(11)|Non|
|1|1
|1|2
|1|3
|2|0
|2|2
|2|3

當libelleCarac為“屏幕尺寸”且idTypeProd = 2時,我需要獲取“ valeur”的所有值

所以我嘗試使用:

SELECT * 
FROM types_carac as T, caracteristiques as C, liste_caracteristiques as L 
WHERE T.idCarac = C.idCarac 
AND C.idCarac = L.idCarac 
AND idTypeProd = 2 
AND libelleCarac = "Screen size"

在我的結果中,某些值未與idTypeProd = 2鏈接

我有 :

|idTypeProd|idCarac|idCarac|libelleCarac|idCarac|refproduit|valeur
|2|2|2|Screen size|2|4942|7
|2|2|2|Screen size|2|8149|12
|2|2|2|Screen size|2|9980|15cm
|2|2|2|Screen size|2|10300|4cm
|2|2|2|Screen size|2|10316|8.3cm

我需要

|idTypeProd|idCarac|idCarac|libelleCarac|idCarac|refproduit|valeur
|2|2|2|Screen size|2|4942|7
|2|2|2|Screen size|2|8149|12

實際上,我只需要idType = 2的Screen Size值,我的查詢對我來說看起來不錯,但結果卻不然

讓我知道這個是否奏效。 它使用現代的連接語法,如果有錯誤,則更易於閱讀和調試。 此查詢連接你的三個表在一起,然后返回你的valeur值,其中idTypeProd是2和libelleCarac是屏幕尺寸。

SELECT  valeur
FROM    liste_caracteristiques lc
JOIN    caracteristiques c on c.idCarac = lc.idCarac
JOIN    types_carac tc on tc.idCarac = c.idCarac
WHERE   tc.idTypeProd = 2
AND     libelleCarac = "Screen size"

您可以在注釋部分中使用如上所述的JOIN嘗試此查詢:

SELECT
    TC.idTypeProd
    ,LC.idCarac
    ,C.libelleCarac
    ,LC.refproduit
    ,LC.valeur
FROM liste_caracteristiques LC
INNER JOIN types_carac TC
    ON LC.idCarac = TC.idCarac
    AND idTypeProd = 2
INNER JOIN caracteristiques C
    ON TC.idCarac = C.idCarac
    AND libelleCarac = 'Screen size'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM