为了账号安全,请及时绑定邮箱和手机立即绑定

并排显示一条 Union 语句

并排显示一条 Union 语句

PHP
慕容708150 2022-05-27 09:51:20
所以我有以下选择语句:SELECT game_name, status, OS FROM mobile_version_sports UNION ALL SELECT game_name, status, OS FROM android_sports这样我得到以下输出:Dragons APPROVED    IOSDragons 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>";}我遇到了麻烦,因为我希望它用两个操作系统互相说出游戏的名称,然后根据状态和我的 CSS 改变游戏名称。编辑:我需要通过 PHP 以这种方式查看,以便在网页中查看而不是 SQL 调用 例如:Dragons IOS ANDROID
查看完整描述

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>";

}

这有望使您朝着正确的方向前进。


查看完整回答
反对 回复 2022-05-27
?
米脂

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>";

}


查看完整回答
反对 回复 2022-05-27
?
湖上湖

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;


查看完整回答
反对 回复 2022-05-27
  • 3 回答
  • 0 关注
  • 109 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号