MySQL内部连接两个不同列上的2个不同表,这两个表是两个表的一部分

时间:2013-08-19 10:34:11

标签: mysql inner-join multiple-columns multiple-tables

Hello其他程序员,

更好地描述我的问题:

我有两张包含很多列的表格。他们有一些共同的颜色。

表1是具有客户ID,名字,姓氏,公司,街道,邮政编码,城市,类别等的客户表。

表2是预订表,也有名字,姓氏,公司,街道,邮政编码和城市。表2另外还有Coloums Room_ID,Date,Customer_ID等。 愚蠢的事情是:某些条目的Customer_ID为空。

现在我必须从Costumer表中获取预订房间的每个人的数据。

经过一些研究,经过阅读低谷http://www.codeproject.com/Articles/33052/Visual-Representation-of-SQL-JoinsHow to do an INNER JOIN on multiple columns后,我认为我需要内部加入。

我的问题是How to do an INNER JOIN on multiple columns中推荐的方法并不适合我需要的方法,因为我想加入2个coloumns而不是2次同一个soloumn。

这是我目前的查询:

'SELECT tbl1.ID, tbl1.company, tbl1.title, tbl1.lastname, tbl1.fistname, tbl1.street, tbl1.city, tbl1.zipcode, tbl1.phone, tbl1.email, tbl1.category_ID, tbl1.Hotel_ID, tbl2.*
                 FROM customer AS tbl1
           INNER JOIN booking AS tbl2
                   ON 
                WHERE '.$searchterms.'
             GROUP BY tbl1.firstname, tbl1.lastname, tbl2.room, tbl2.date'

这里有一些关于连接方式的伪代码:

'Select needed cloumns
                 FROM customer AS tbl1
           INNER JOIN booking AS tbl2 
                   ON tbl1.firstname=tbl2.firstname AND tbl1.lastname=tbl2.lastname
                WHERE '.$searchterms.'
             GROUP BY tbl1.firstname, tbl1.lastname, tbl2.room, tbl2.date'

我需要的是提示,解释或链接,以帮助我提出解决方案,我会非常感激。 关于解释的问题,我有一些停电。我希望你能帮助我。

2 个答案:

答案 0 :(得分:0)

'SELECT ID, company, title, lastname, fistname, street, city, zipcode, phone, email,     category_ID, Hotel_ID
             FROM customer AS tbl1
       INNER JOIN booking AS tbl2
               ON tbl1.id=tbl2.id
            WHERE relevantcolumn='searchterms'
         GROUP BY tbl1.firstname, tbl1.lastname, tbl2.room, tbl2.date'

答案 1 :(得分:-1)

很抱歉,如果我的答案有误,但我不确定我是否正确提出了问题,但无论如何,我会尽力回答这个问题。 连接目标,就是能够在两者中查询多个相关表的数据,我想你已经知道了,但关键是,你需要两个表之间的链接区域,这应该是唯一的,换句话说,第二个表(外键)中的customerId应该是第一个(主键)的客户ID,然后,在链接完成后,您可以使用条件优化搜索。 两个表之间的链接是用“ON”完成的,但你似乎把它误认为是“where”子句。 所以,很快就说出来,

SELECT tbl1.*, tbl2.* 
FROM tbl1 INNER JOIN tbl2 
ON tbl1.id=tbl2.Customer_ID 
WHERE WhateverConditions 
GROUP BY tbl1.firstname, tbl1.lastname, tbl2.room

我希望我回答你的需要。