php - 两个表的逻辑问题

标签 php mysql

大家好,我创建了一个灯具列表。

$result = mysql_query("SELECT date FROM ".TBL_FIXTURES." WHERE compname = '$comp_name' GROUP BY date");
    $i = 1;
    $d = "Start";
    while ($row = mysql_fetch_assoc($result)) 
    {
        $odate = $row['date'];
        $date=date("F j Y", $row['date']);
        echo "<p>Fixture $i - $d to $date</p>";
    }

正如您从查询中看到的那样,日期显示在 fixtures 表中。 我的系统的工作方式是,当一个夹具被“播放”时,它就会从这个表中删除。因此,当整轮比赛结束后,此表中将不会有该轮比赛的任何日期。它们将在另一个表中。

无论如何,我是否可以同时运行其他日期查询,如果结果表中没有日期,则只显示 fixtures 表中的日期?

"SELECT * FROM ".TBL_CONF_RESULTS." 
                               WHERE compid = '$_GET[id]' && type2 = '2' ORDER BY date" 

那将是第二个查询!

从这里开始编辑...

无论如何我可以从两个表中选择日期,然后只在有匹配项时使用一个。然后使用日期行(GROUPED BY)来填充我的查询?这可能吗?

最佳答案

听起来你想 UNION 两个结果集,类似于以下内容:

SELECT f.date FROM tbl_fixtures f
WHERE f.compname = '$comp_name'
UNION SELECT r.date FROM tbl_conf_results r
WHERE r.compid = '$_GET[id]' AND r.type2 = '2'
GROUP BY date

这应该选择 f.date 并从 r.date 添加尚未在结果集中的行(至少这是 T-SQL 的行为)。显然它可能无法很好地扩展,但是有很多关于它的博客(搜索:UNION T-SQL)。

关于php - 两个表的逻辑问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3048068/

相关文章:

php - 检查 cookie - 如果找到显示链接

PHP 和皇家邮政查询 API

php - 在MySQL中,如何将这个字符串转换为日期?

MySQL - 当我尝试 INSERT INTO 时卡住

mysql - 在 Docker 中配置 mysql

mysql - 如何将 Time.zone 设置为 UTC 并保持这种状态?

MySQL 动态查询使用来自查询本身的信息

mysql - 我如何限制MySQL中的选择?

php - 为了从我的两个表中进行回显,应该使用什么正确的 sql 查询?

javascript - 新手ajax和php获取参数