Php 并排显示一条Union语句
因此,我有以下Select语句:Php 并排显示一条Union语句,php,css,mysql,Php,Css,Mysql,因此,我有以下Select语句: SELECT game_name, status, OS FROM mobile_version_sports UNION ALL SELECT game_name, status, OS FROM android_sports 由此,我得到以下输出: Dragons APPROVED IOS Dragons APPROVED ANDROID 有了它,我就有了一个PHP页面,它可以显示所有内容,并使用少量CSS来简单地更改选项卡的颜色。在
SELECT game_name, status, OS
FROM mobile_version_sports
UNION ALL
SELECT game_name, status, OS
FROM android_sports
由此,我得到以下输出:
Dragons APPROVED IOS
Dragons APPROVED ANDROID
有了它,我就有了一个PHP页面,它可以显示所有内容,并使用少量CSS来简单地更改选项卡的颜色。在该PHP中,我有以下代码:
foreach($q as $row2){
print "<tr><td>".$row2['game_name']."</td>";
print "<td class=".$row2['mobile_version_sports.status'].">".$row2['OS.mobile_version_sports']."
</td>";
print "<td class=".$row2['status.android_sports'].">".$row2['OS.android_sports']."</td></tr>";
}
您应该能够通过使用
JOIN
来获得所需的内容
选择手机版本\u sports.game\u名称,
移动版运动状态作为移动版运动状态,
mobile_version_sports.OS作为mobile_version_sports_OS,
android_sports.status作为android_sports_status,
android_sports.OS作为android_sports_OS
从手机版到体育版
加入安卓体育
在移动版上\u sports.game\u name=android\u sports.game\u name
SQL Fiddle:
根据您的编辑,您的PHP代码如下所示:
foreach($q作为$row2){
打印“$row2[“游戏名称]”;
打印“%$row2[“移动版体育版”]
";
打印“$row2['android_sports_OS'”;
}
这将有望让你走上正确的方向。如你的评论所示,在这里做一些假设:
可用作链接两个表的键game\u name
仅支持iOS游戏mobile\u version\u sports
仅支持android游戏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>";
}
foreach($q作为$row2){
打印“$row2[“游戏名称]”;
打印“”;
打印$row2['iOS']?'iOS':'';
打印$row2['android']?'android':'';
打印“”;
}
如果两张表之间的游戏名称始终匹配,请尝试使用此简短而简单的代码。否则,请将左连接与一些ifnull(a.status,'NOT')一起用作\u status
stations:
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;
表上是否有一个键指示它们是同一个游戏,或者游戏名称都是唯一的?游戏名称就是链接它们的东西。它不是一个键,但它们是镜像副本,
OS
在mobile\u version\u sports
表中保存什么类型的值?这个分开的表结构看起来很奇怪。它只保存IOS的文本。您是否控制这个数据库?有没有理由不把这两张桌子放在一起?似乎这会大大简化您的问题。当我尝试运行时,我得到以下结果:结果:在“分隔符”附近:第1行出现语法错误:选择游戏名称、组名称(操作系统分隔符)确保您的查询显示为-GROUP\u CONCAT(操作系统分隔符“”)作为OS@Pittsiesqlite mysqlThis删除结果中提到的需要的状态。不同表上的状态可能不同,因此不起作用。如果有人否决了此答案,请说明原因。如果添加或需要更多操作系统,则这样做不容易扩展。如果添加更多操作系统,则会添加两个colums和两个位置每次更新。您的假设是正确的。但是我更需要PHP代码中所需的结果,因为它使用CSS根据Status@Alex根据OP在评论和问题中告诉我们的内容所做的假设,因此不需要进行扩展。@Pittsie,对于给定的我可以给你举个例子,但你可能需要做一些工作,而不仅仅是复制和粘贴
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;