2011-01-06 6 views
1

クエリを作成しましたが、時にはNULLである列を選択しています。NULL列の選択

$q = "SELECT g.id AS gameid,g.home_user, g.home_user2, g.away_user, g.away_user2, g.home_score, g.away_score, g.date_confirmed, g.type, 
      h1.username AS home_username, h2.username AS home_username2, a1.username AS away_username2, a2.username AS away_username2 
      FROM ".TBL_FOOT_GAMES." g 
      INNER JOIN ".TBL_USERS." h1 ON h1.id = g.home_user 
      INNER JOIN ".TBL_USERS." h2 ON h2.id = g.home_user2 
      INNER JOIN ".TBL_USERS." a1 ON a1.id = g.away_user 
      INNER JOIN ".TBL_USERS." a2 ON a2.id = g.away_user2 
      WHERE g.status = '$status' 
      ORDER BY g.date_confirmed DESC LIMIT 25"; 

home_user2と

away_user2は時々NULLとすることができます。明らかに、これは返されたデータが表示されないようにクエリが停止しているようです。 クエリからこれらの列を削除したとき、私はリターンを得ました。 これを含めてもエラーは発生しません。ただ単純に行を選択していません。

どうすればこの問題を回避できますか?

答えて

2

これらの列の内部結合ではなく、left joinを使用する必要があります。

$q = "SELECT g.id AS gameid,g.home_user, g.home_user2, g.away_user, g.away_user2, g.home_score, g.away_score, g.date_confirmed, g.type, 
      h1.username AS home_username, h2.username AS home_username2, a1.username AS away_username2, a2.username AS away_username2 
      FROM ".TBL_FOOT_GAMES." g 
      INNER JOIN ".TBL_USERS." h1 ON h1.id = g.home_user 
      LEFT JOIN ".TBL_USERS." h2 ON h2.id = g.home_user2 
      INNER JOIN ".TBL_USERS." a1 ON a1.id = g.away_user 
      LEFT JOIN ".TBL_USERS." a2 ON a2.id = g.away_user2 
      WHERE g.status = '$status' 
      ORDER BY g.date_confirmed DESC LIMIT 25"; 
+0

最後に、私はLEFT JOIN!乾杯:) – sark9012

関連する問題