3 回答

TA貢獻1895條經驗 獲得超7個贊
你應該能夠通過使用JOIN來得到你需要的東西。
SELECT mobile_version_sports.game_name,
mobile_version_sports.status AS mobile_version_sports_status,
mobile_version_sports.OS AS mobile_version_sports_OS,
android_sports.status AS android_sports_status,
android_sports.OS AS android_sports_OS
FROM mobile_version_sports
JOIN android_sports
ON mobile_version_sports.game_name = android_sports.game_name
SQL 小提琴:http ://sqlfiddle.com/#!9/31be6/1
根據您的編輯,您的 PHP 代碼將如下所示:
foreach($q as $row2){
print "<tr><td>".$row2['game_name']."</td>";
print "<td class=".$row2['mobile_version_sports_status'].">".$row2['mobile_version_sports_OS']."
</td>";
print "<td class=".$row2['android_sports_status'].">".$row2['android_sports_OS']."</td></tr>";
}
這有望使您朝著正確的方向前進。

TA貢獻1836條經驗 獲得超3個贊
如您的評論所示,在這里做出一些假設:
game_name
可用作鏈接 2 個表的鍵mobile_version_sports
僅持有 iOS 游戲android_sports
只支持安卓游戲
因此,有了這些假設,您可能會更幸運地使用這樣的查詢來執行類似于完全外連接的操作:
SELECT i.game_name, i.status AS iOSStatus, a.status AS androidStatus,
i.OS IS NOT NULL AS iOS,
a.OS IS NOT NULL AS android
FROM mobile_version_sports i
LEFT JOIN android_sports a ON a.game_name = i.game_name
UNION
SELECT a.game_name, i.status AS iOSStatus, a.status AS androidStatus,
i.OS IS NOT NULL AS iOS,
a.OS IS NOT NULL AS android
FROM mobile_version_sports i
RIGHT JOIN android_sports a ON a.game_name = i.game_name
PHP 代碼示例:
foreach($q as $row2){
print "<tr><td>".$row2['game_name']."</td>";
print "<td>";
print $row2['iOS'] ? '<span class="' . $row2['iOSStatus'] . '">iOS</span>' : '';
print $row2['android'] ? '<span class="' . $row2['androidStatus'] . '">Android</span>' : '';
print "</td></tr>";
}

TA貢獻2003條經驗 獲得超2個贊
如果 2 個表之間總是匹配 game_name,請嘗試使用這個簡短的代碼。否則將左連接與一些 ifnull(a.status,'NOT') as a_status語句一起使用:
SELECT m.game_name,
m.OS AS m_OS,
m.status AS m_status,
a.OS AS a_OS,
a.status AS a_status
FROM mobile_version_sports as m
JOIN android_sports as a
ON m.game_name = a.game_name group by m.game_name;
- 3 回答
- 0 關注
- 102 瀏覽
添加回答
舉報