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 关注
- 109 浏览
添加回答
举报