2014-01-09 143 views
0

我有两个表,公司和openhours。MySQL从同一表中选择两行

公司 ID |名称

开放时间 ID |一天|公司|打开|接近

openhours有每家公司7排,每一天的开放时间(“星期一”,“星期二”,“结婚”等)

基本上我想两者取openhours周三(周三),周四(周四)

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

什么我要找的,虽然是在同一个查询让公司和openhours既为公司,但到目前为止,我只能得到1个一行openhours

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

有什么帮助吗?一直坐在这个现在相当一段时间

编辑 这是openhours表的样子(公司编号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 
+0

你提到查询只给你一条记录,你用什么来查看你的查询结果? –

+0

请发布数据。 – elbuild

+0

请看第一篇文章的编辑 – Emil

回答

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

只给我1个openhours的记录,这个记录是星期三。 – Emil

+0

您可以发布您的数据库查询的数据以选择贵公司的所有开放时间。你确定周四在你的数据库里有几个小时? –

+0

是的,我确定星期四有开放时间。你的查询只能从openhours表中返回一条记录,以先到者为准(在本例中是星期三) – Emil

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

+0

只给我1个openhours的记录,这是星期三的记录。我期待在星期三和星期四都得到。谢谢您的意见,但真的很感激! – Emil

+0

@Emil哎呀!检查我的更新语法。 – Sam

+0

同样的问题,只给我星期三(星期三) – Emil

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

你的查询有一个 '=='(语法错误)。

+0

与上述答案相同。感觉就像我试过一切。 我需要的是同时获得星期三(星期三)和星期四(星期四)的记录, – Emil

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