0

なぜこれが機能しないのかわかりません。いずれかのテーブルを個別に結合すると、適切な結果が返されますが、両方を結合しようとすると、0 の結果が得られます。(car_id と boat_id はどちらもテーブルの主キーです。)

$query = "SELECT
             *
        FROM            
            posted c
            JOIN posted_car e on c.car_id = e.car_id
            JOIN posted_boat g on c.boat_id = g.boat_id
        WHERE
            c.posted = 'posted'
            ORDER BY date DESC LIMIT 0, 30";
        $resultBoth = mysql_query($query, $db) or die(mysql_error($db));

私がそうするとき、それは注目に値するかもしれません

LEFT JOIN posted_car e on c.car_id = e.car_id
RIGHT JOIN posted_boat g on c.boat_id = g.boat_id

posted_boat テーブルに参加しただけのような結果が得られます。誰かが私を正しい方向に向けることができれば...それは大歓迎です。

4

1 に答える 1

2

問題になる可能性のあるJOINを使用しています。適切な結果を得るには、左外部結合を使用する必要があります。次の構文を確認してください。

$query = "SELECT *
    FROM            
        posted c
        left OUTER JOIN posted_car e on c.car_id = e.car_id
        left OUTER JOIN posted_boat g on c.boat_id = g.boat_id
    WHERE c.posted = 'posted'
        ORDER BY date DESC LIMIT 0, 30";
    $resultBoth = mysql_query($query, $db) or die(mysql_error($db));
于 2013-07-07T20:14:13.733 に答える