1

私のアプリケーションでは、table1からすべてのデータと関連するtable2の最大IDを選択したいと思います。問題は、table2にエンティティがある場合、SQLが正常に機能することです。しかし、そうでない場合、restulsetはNULLで満たされます:

SELECT table1.*, CONCAT(table1.number, '-', table1.item_id) AS IdNumber, MAX(table2.id) AS Table2Id
  FROM table1
  LEFT JOIN table2 ON (table1.ID = table2.EQUIP_ITEM_ID)
WHERE table1.GROUP_ID > 0
  AND table2.IN_PROGRESS = 1
ORDER BY table1.ID ASC
LIMIT 15 

正しい結果セットを取得するには、何を変更する必要がありますか?

4

3 に答える 3

1

問題は、2番目のWHERE条件にあります。table2.IN_PROGRESS = 1

それでもtable1データを表示したい場合は、SQLを次のように修正します。

(table2.IN_PROGRESS = 1 OR table2.IN_PROGRESS IS NULL)

値として0を表示する場合は、次のように変更MAX(table2.id)します。COALESCE(MAX(table2.id),0)

于 2012-07-12T16:35:43.707 に答える
1

これを試して::

SELECT table1.*, CONCAT(table1.number, '-', table1.item_id) AS IdNumber, MAX(IFNULL(table2.id),0) AS Table2Id
  FROM table1
  LEFT JOIN table2 ON (table1.ID = table2.EQUIP_ITEM_ID)
WHERE table1.GROUP_ID > 0
  AND table2.IN_PROGRESS = 1
ORDER BY table1.ID ASC
LIMIT 15
于 2012-07-12T16:38:58.593 に答える
1

SELECT table1。*、CONCAT(table1.number、'-'、table1.item_id)AS IdNumber、MAX(table2.id)AS Table2Id

FROM table1

LEFT JOIN table2 ON(table1.ID = table2.EQUIP_ITEM_ID)

WHERE table1.GROUP_ID> 0

AND table2.IN_PROGRESS = 1

AND IS NOT NULL(table2.IN_PROGRESS)

table1.IDASCによる注文

制限15

それは大丈夫でなければなりません;)

于 2012-07-12T16:51:08.147 に答える