2017-05-31 3 views
-1

ここで3つのテーブルを結合するにはどうすればいいですか?これらのテーブルを結合するにはMYSQL

enter image description here

私は製品名を取得したいです。

SELECT order_detail.productid 
FROM order_detail 
INNER JOIN orders 
    ON orders.id_order = order_detail.orderid 
INNER JOIN products 
ON orders.id_order=products.id_product 

sqlクエリはゼロ列を返します。私は間違っていますか?

答えて

1

あなたのお問い合わせではorders.id_order=products.id_productに参加していますが、order_detail.productid=products.id_productに参加する必要があるようです。だから、私はあなたのクエリを変更することをお勧めしたい:

SELECT 
    od.productid, 
    p.name_product -- added name column 
FROM order_detail od 
INNER JOIN orders o 
    ON o.id_order = od.orderid 
INNER JOIN products p 
ON od.productid=p.id_product 

あなたは、私は、コードがもう少し簡潔にするために、いくつかの表の別名を追加したことに気づくでしょう。また、最終結果にordersテーブルを使用する必要がない場合は、参加を辞退することができます。

SELECT 
    od.productid, 
    p.name_product 
FROM order_detail od 
INNER JOIN products p 
ON od.productid=p.id_product 
+0

これは本当ですか?私は結果を得ているので、右のものはありません –

+0

@GoranAhibit何の結果が得られていますか?そして、あなたが望む望ましい結果は何ですか?いくつかのサンプルデータと最終的な結果を含めるために、質問を編集する必要があります。 – ollie

+0

@ GoranAhibit:予想される出力と出力を共有できますか?いずれにせよ、 'int 'と' varchar'をキャストせずに(あなたのダイアグラムに従って)結合することは決して良い考えではなく、不合理な出力を与えることになります。 –

関連する問題