2017-11-08 8 views
0

次のクエリを実行して別の行番号を取得しましたが、同じ行IDを表示しています。以下のクエリをご確認ください同じ行IDを取得していても行IDが異なるクエリで問題が発生する

私は問題を解決するために提案してください。

クエリ:

SELECT 
    item.id AS itemId, 
    ol.id AS lineId, 
    l.description AS order_description, 
    l.type_id AS itemType, 
    l.quantity, 
    l.amount AS amount 
FROM 
    invoice_line l, purchase_order po, order_line ol, 
    order_process op, item,invoice i,item_type it,item_type_map itm 
WHERE 
    i.id = l.invoice_id AND 
    op.invoice_id = l.invoice_id AND 
    op.order_id = po.id AND 
    po.id = ol.order_id AND 
    l.invoice_id = 10325 AND 
    ol.item_id = itm.item_id AND 
    itm.type_id = it.id AND 
    l.item_id = item.id AND 
    item.id = itm.item_id AND 
    it.description <> 'Provisionable' AND 
    it.description <> 'Usage' AND 
    it.description <> 'Refund' AND 
    NOT l.description = "voice call" AND 
    it.id = 280500 
GROUP BY 
    it.id, 
    l.description, 
    l.id; 

enter image description here

+0

3つの列だけをグループ化するため、クエリは無効ですが、これより多く選択するとクエリが無効です。どのように動作するかを理解するために、 'GROUP BY'の良いMySQLチュートリアルを読むことをお勧めします。 –

+0

グループで追加する必要がある列の数 – Mouni

+0

GROUP BYで列を追加すると43行になりますが、上記のクエリ結果は8行しか表示されません。 – Mouni

答えて

0

私はあなたがここで何をしたいのかクリアしていないですが、私はそれをより理解しやすくするために、クエリを書き換えることにより開始すると、私が参加し、追加することによって、再構築します一度に少しずつ条件を決めて、各ステップで何が起こっているのかを理解します。

SELECT 
    item.id AS itemId, 
    ol.id AS lineId, 
    l.description AS order_description, 
    l.type_id AS itemType, 
    l.quantity, 
    l.amount AS amount 
FROM  item 
join  item_type it item.id = itm.item_id 
join  item_type_map itm itm.type_id = it.id 
left join  order_process op op.order_id = po.id 
left join  order_line ol ol.item_id = itm.item_id 
left join  purchase_order po po.id = ol.order_id 
left join  invoice i op.invoice_id = l.invoice_id 
left join  invoice_line l l.item_id = item.id 

WHERE 
    i.id = l.invoice_id AND #???? 
    l.invoice_id = 10325 AND 
    it.description <> 'Provisionable' AND 
    it.description <> 'Usage' AND 
    it.description <> 'Refund' AND 
    l.description <> 'voice call' AND 
    it.id = 280500 

item、item_type、item_type_mapの間に1対1の関係があると想定しています。しかしその後、私は他のテーブルとの関係について全く知らない。これらのすべてのテーブルのサンプルデータを質問のテキストとして追加すると役立ちます。私は理解していませんNOT l.description = "音声通話"私はそれを変更し、あなたが望む結果がわからないのでグループを削除しました。

+0

私は画像のようにする必要がありますが、lineId列は同じIDであってはなりません。異なる必要があります。 – Mouni

関連する問題