【问题标题】:MySQL select from table depending to other table valuesMySQL 根据其他表值从表中选择
【发布时间】:2014-10-10 16:21:47
【问题描述】:

很抱歉打扰了,但我需要你们专业人士的帮助......

我有两张桌子:

Table1:
ID, date, menu1, menu2, menu3, menu4

Table2:
ID, name, somethingElse, somethingElse2

在 Table1 (menu1, menu2, menu3, menu4) 中是 Table2 的 ID。我需要的是向数据库查询“日期”值并从 Table2 中获取四行(取决于 Table1 的 menuX 值)有什么建议吗?

【问题讨论】:

    标签: php mysql select


    【解决方案1】:

    阅读 MySQL 文档并查看有关 JOINing 的 MySQL 教程。在那里你会发现这样的东西:

    做一个简单的SELECT 加上JOIN 并告诉MySQL 使用ID 作为连接列:

    SELECT Table1.`date` FROM Table1 
    JOIN Table2 ON Table1.ID = Table2.ID
    WHERE Table1.menu1 = "someValue"
    AND Table1.menu2 = "someOtherValue"
    

    如果运行速度有点慢,请尝试在其中一个表 id-col 上添加 INDEX

    ALTER TABLE Table1 ADD INDEX myIndex (ID)
    

    您可以通过声明来检查检查了多少行

    EXPLAIN SELECT Table1.`date` FROM Table1 ...
    

    【讨论】:

    • Table1.ID != Table2.ID 没有连接。 Table1.menu1 = Table2.ID, Table1.menu2 = Table2.ID, Table1.menu3 = Table2.ID, Table1.menu4 = Table2.ID,这就是我需要的,通过查询Table1中的日期从Table2中获取四行
    • 那又怎样?只需在ON 上面的部分查询中使用这些条件。通过AND连接它们...
    • 但是在你的例子中没有添加 "WHERE date='14-10-10'" 我需要类似 SELECT * FROM Table2 WHERE Table2.ID =
    • 但是在你的例子中没有添加 "WHERE date='14-10-10'" 我需要类似 $date = '14-10-10'; SELECT * FROM Table2 WHERE Table2.ID = Table1.row_where_date_=_$date.menu1_column_value AND Table2.ID = Table1.row_where_date_=_$date.menu2_column_value AND Table2.ID = Table1.row_where_date_=_$date.menu3_column_value AND Table2.ID = Table1.row_where_date_=_$date.menu4_column_value
    【解决方案2】:

    好的,现在我明白你的问题了。感谢您提供的示例,这里是一个可以解决您的问题的查询。这里的技巧是使用UNION 将一个查询结果附加到另一个查询结果下。这样做四次就可以了:

    SELECT b.* FROM dailymenu as a JOIN menu as b ON a.menu1 = b.ID WHERE a.`date` = '2014-10-08'
    UNION
    SELECT b.* FROM dailymenu as a JOIN menu as b ON a.menu2 = b.ID WHERE a.`date` = '2014-10-08'
    UNION
    SELECT b.* FROM dailymenu as a JOIN menu as b ON a.menu3 = b.ID WHERE a.`date` = '2014-10-08'
    UNION
    SELECT b.* FROM dailymenu as a JOIN menu as b ON a.menu4 = b.ID WHERE a.`date` = '2014-10-08'
    

    你的菜单听起来很好吃 :-)

    【讨论】:

    • 也许听起来,但不是 :-D 这是工厂厨房的菜单,这个项目在这里只是为了向总部报告,情况有多糟糕 :-D -> 员工正在评价食物 :- )
    猜你喜欢
    • 2022-07-06
    • 1970-01-01
    • 2018-09-24
    • 2019-12-13
    • 2019-09-18
    • 1970-01-01
    • 1970-01-01
    • 2014-01-09
    • 2019-05-23
    相关资源
    最近更新 更多