0

データが作成された時点で並べ替えられた 2 つの異なるテーブルからデータを表示しようとしています。

データを取得している2つのテーブルは次のとおりです。

アクティブなプロジェクト

+------------+------------+---------+-------+-------------+
| project_id | ts_created | user_id | title | description |
+------------+------------+---------+-------+-------------+

好き

+---------+------------+------------+
| user_id | project_id | ts_created |
+---------+------------+------------+

目的の結果は、これらの列から取得されたすべてのデータが適切に表示され、この列で並べ替えられたものです。

+------------+
| ts_created |
+------------+

これは私が現在使用しているクエリです:

$sql = "SELECT *
        FROM (SELECT project_id AS ppid, 
                     ts_created AS pts,
                     user_id AS puid,
                     title AS ptitle,
                     description AS pdesc
              FROM active_projects 
              WHERE user_id = 12)
        UNION
             (SELECT id AS lid, 
                     user_id AS luid,
                     project_id AS lpid,
                     ts_created AS lts
              FROM likes 
              WHERE user_id = 12)";

しかし、それは私が望むようには機能していません。何が起こっているのかをデバッグしようとしていますが、今のところ、実際にはデータを取得していないと言っているだけです。

JOIN と UNION について調べていますが、このクエリにどちらを使用すればよいかわかりません。どんな支援も大歓迎です。

編集: @Samuel の回答を使用して、クエリが正しく表示されるようになりました。しかし、現在、結果は行ごとに 3 回表示されています。私はクエリの最後にこれをやっています:

$act = mysql_query($sql);

次に、結果をエコーアウトするときに、次のように while ループを使用しています。

while ($t = mysql_fetch_row($act)) {
    echo $t[1];
}

各行が 3 回表示される理由について何か考えはありますか?

4

2 に答える 2