2011-01-06 63 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

啊,最後我得到使用左加入!乾杯芽:) – sark9012 2011-01-06 02:00:51