-1

私は 2 つのテーブルを持っています。テーブル reseau_stream には、ユーザーの投稿に関するさまざまな情報があります。ユーザーは他の人の投稿を共有できます。テーブル reseau_share はその接続を作成します (以下に両方のテーブルの詳細があります)。ここで、ユーザーが他の誰かの投稿を共有した場合、reseau_share の日時を使用してクエリを並べ替える必要があります。

MySQL のスキルはあまりありませんが、助けを借りて、最終的に以下のクエリにたどり着きました。reseau_share に行がある場合にのみ機能します。reseau_share が空の場合、クエリは 0 の結果を返します。理由が本当にわかりません。誰でも理由を特定できますか? 乾杯。

テーブル reseau_stream

id   user_id     content        datetime
1    100         Lorem Ipsum1   2013-03-04 19:35:02
2    100         Lorem Ipsum2   2013-03-04 12:35:02

テーブル reseau_share

 id    user_id     target_id     stream_id    datetime
 -------------------- EMPTY ------------------------

クエリ

SELECT reseau_stream.id,
       reseau_stream.user_id,
       reseau_stream.content,
       IF(reseau_stream.user_id = 100, reseau_stream.datetime, reseau_share.datetime) as datetime 
       FROM reseau_stream, reseau_share 
       WHERE reseau_stream.id 
       IN (
           SELECT id
           FROM reseau_stream
           WHERE user_id = 100
           UNION 
           SELECT stream_id
           FROM reseau_share
           WHERE user_id = 100
        )   ORDER BY  datetime DESC;
4

2 に答える 2

2

空集合を含む非空集合のデカルト積は空集合です。

ステートメント内の複数のテーブルは、FROM上記のルールを使用して 2 つのテーブルを結合し、結果が 0 になります。

于 2013-05-27T03:32:12.973 に答える