【问题标题】:MySQL select two rows from same tableMySQL从同一个表中选择两行
【发布时间】:2014-01-28 15:38:12
【问题描述】:

我有两张桌子,company 和 openhours。

公司 编号 |名字

营业时间 编号 |天 |公司|开放|关闭

openhours 每个公司有 7 行,每天的营业时间(“周一”、“周二”、“周三”等)

基本上我想获取周三(周三)和周四(周四)的营业时间

SELECT * FROM openhours WHERE company=1 AND day='wed'
SELECT * FROM openhours WHERE company=1 AND day='thu'

虽然我正在寻找的是在同一个查询中同时获得公司和公司的营业时间,但到目前为止我只能获得 1 行营业时间

SELECT company.*, openhours.* FROM company INNER JOIN openhours ON openhours.company=company.id WHERE openhours.day == 'wed' OR openhours.day == 'thu

有什么帮助吗?已经坐了很久了

编辑 这是 openhours 表的样子(公司 id 1)

标识 |天 |公司|开放|关闭

1 mon 1 08:00 16:00
2 tue 1 08:00 16:00
3 wed 1 10:00 16:00
4 thu 1 11:00 15:00
5 fri 1 08:00 16:00
6 sat 1 11:00 14:00
7 sun 1 11:00 14:00

【问题讨论】:

  • 您提到查询只给您一条记录,您用什么来查看查询结果?
  • 请发布数据。
  • 查看第一篇文章的编辑

标签: php mysql sql


【解决方案1】:
SELECT company.*, openhours.* 
FROM company INNER JOIN openhours ON openhours.company=company.id 
WHERE (day='wed' OR day='thu')

【讨论】:

  • 只给我 1 条关于周三的营业时间记录。
  • 能否请您发布您的数据库查询的数据,以便为您的公司选择所有营业时间。您确定您的数据库中有星期四的营业时间吗?
  • 是的,我确定星期四有营业时间。您的查询将只返回 openhours 表中的一条记录,以先到者为准(在本例中为星期三)
  • 我不这么认为,因为查询的 and 没有 LIMIT。
  • 我已经按原样尝试了每一个修改,但总是返回第一个匹配项(星期三)。喜欢就自己试试吧。卡在这个问题上 2 天了
【解决方案2】:
SELECT
  company.*, openhours.*
FROM
  company
  INNER JOIN
    openhours ON openhours.company=company.id
WHERE
  company.id = 1 AND
  openhours.day IN ('wed', 'thu')
;

你说你仍然得到 1 行,所以我认为还有其他问题,因为它在 this SQLFiddle 中对我来说很好用。你怎么称呼这个查询?您的执行或环境可能存在问题。你也可以试试LEFT JOIN,但这应该是INNER

【讨论】:

  • 只给了我 1 条关于星期三的营业时间的记录。我想在星期三和星期四都买。不过感谢您的意见,非常感谢!
  • 同样的问题,只给我周三(周三)的记录
  • 很奇怪。您可以尝试将company.id 更改为openhours.company 吗?
  • 同样的问题。但它不是必须只从 openhours 表中返回 1 条记录,以先到者为准(在本例中为星期三)。
  • @Emil 请查看我的SQLFiddle,一切正常。
【解决方案3】:

怎么样:

SELECT * FROM openhours WHERE company=1 AND (day='wed' OR day='thu');

或:

SELECT company.*, openhours.* FROM company INNER JOIN openhours ON openhours.company = company.id WHERE openhours.day IN ('wed', 'thu')

您的查询有一个“==”(语法错误)。

【讨论】:

  • 与上面的答案相同。感觉我什么都试过了。我需要的是获取星期三(星期三)和星期四(星期四)的记录
【解决方案4】:
Select *
from company c, openhours o
where c.id=o.company and c.id=1 and o.day='wed' or o.day='thu';

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-21
    • 1970-01-01
    相关资源
    最近更新 更多