1

SQL 結合テーブルを作成しようとしていますが、必要な正しいデータが返されません。だから私は以下のような構造のスライダーテーブルを持っています。 スライダー テーブル構造

したがって、テーブルにはアイテムを参照する外部キーがあります。アイテムまたはスライダーには、公開済みと呼ばれる同じ列があり、スライダー/アイテムが公開されているかどうかを示します。

公開されているすべてのスライダーと、公開されているアイテムを返すクエリを作成しようとしています。item_id が nll であるスライダーと結合されています。

したがって、上記の画像によると、クエリは ID (2-3-4) を持つ 3 行のみを返す必要があります。これは、テーブル項目の ID 34 (item_id=34) の項目が公開されていないため、返される値には含まれないためです。これまでに作成したクエリは次のとおりです。

SELECT *
FROM sliders
LEFT JOIN items ON sliders.item_id = items.id
WHERE sliders.published =1 AND items.published =1

ただし、クエリは 2 行しか返しません。ID 23、28 の項目に対応する ID 2 および 3 の行。

返される結果は次のとおりです。

返された結果

そのため、3 行ではなく 2 行が返されました。欠落している行は、id 3 の行であり、item_id=null です。

私は一日中これを理解しようとしてきましたが、ここで立ち往生しているようです...

どんな助けでも大歓迎です..

4

2 に答える 2

0

これは、正しいデータを返す最終クエリです。

SELECT *
 FROM sliders
  LEFT JOIN items 
    ON sliders.item_id = items.id
WHERE sliders.published =1
 AND (
   items.published IS NULL
   OR items.published =1
)
于 2014-05-30T15:00:40.953 に答える