MySQL从同一个表中选择两行

时间:2014-01-09 21:09:59

标签: php mysql sql

我有两张桌子,公司和开放时间。

公司 id |名称

openhours id |一天|公司|打开|靠近

openhours每个公司有7行,每天开放时间('mon','tue','wed'等)

基本上我想在星期三(星期三)和星期四(星期四)取得开放时间

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

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

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

有任何帮助吗?已经坐了很长一段时间了

修改 这就是openhours表的样子(公司ID 1)

id |一天|公司|打开|靠近

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

4 个答案:

答案 0 :(得分:2)

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

你说你还有一排,所以我认为还有一些问题,因为它在this SQLFiddle中对我有用。你是怎么称呼这个查询的?您的执行或环境可能存在问题。您也可以尝试LEFT JOIN,但这应该是INNER

答案 1 :(得分:1)

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

答案 2 :(得分:0)

怎么样:

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')

您的查询有'=='(语法错误)。

答案 3 :(得分:0)

Select *
from company c, openhours o
where c.id=o.company and c.id=1 and o.day='wed' or o.day='thu';