0

私の SQL クエリでは、さまざまなパラメーターをチェックしています。挿入されたトリップコードの各テーブルにデータがある場合、奇妙なことは何も起こりません。しかし、1 つのテーブルにデータが含まれていない場合、データはまったく取得されません。他のテーブルにデータがある場合でも。そのため、テーブルにデータが含まれているかどうかを確認できる必要があり、含まれている場合は選択する必要があります。

SELECT roadtrip_tblgeneral.*,
GROUP_CONCAT(distinct roadtrip_tblhotels.hotel) as hotels,
GROUP_CONCAT(distinct roadtrip_tbllocations.location) as locations,
GROUP_CONCAT(distinct roadtrip_tbltransports.transport) as transports
FROM roadtrip_tblgeneral
INNER JOIN roadtrip_tblhotels
ON roadtrip_tblgeneral.id = roadtrip_tblhotels.tripid
INNER JOIN roadtrip_tbllocations
ON roadtrip_tblgeneral.id = roadtrip_tbllocations.tripid
INNER JOIN roadtrip_tbltransports
ON roadtrip_tblgeneral.id = roadtrip_tbltransports.tripid
WHERE roadtrip_tblgeneral.tripcode = :tripcode
GROUP BY roadtrip_tblgeneral.id

前に GROUP_CONCAT があるテーブルのみ、チェックが必要です。EXISTS というキーワードを前に付けてみました。

前もって感謝します。

4

2 に答える 2

1

INNER JOIN キーワードは、両方のテーブルに少なくとも 1 つの一致がある場合に行を返します。データがない場合は一致できません。おそらく、LEFT JOIN または FULL JOIN を使用する必要があります。

于 2013-05-16T16:53:12.740 に答える