MySQL在两个不同列上的两个不同表的内部联接,这两个列都是上述两个表的一部分

MySQL在两个不同列上的两个不同表的内部联接,这两个列都是上述两个表的一部分,mysql,inner-join,multiple-columns,multiple-tables,Mysql,Inner Join,Multiple Columns,Multiple Tables,各位程序员好 为了更好地描述我的问题: 我有两张有很多列的表。他们有一些共同点 表1是包含客户ID、名字、姓氏、公司、街道、Zipcode、城市、类别等的客户表 表2是预订表,包括名字、姓氏、公司、街道、邮政编码和城市。表2还列出了科隆房间ID、日期、客户ID和其他信息。 愚蠢的事情是:客户ID在某些条目中是空的 现在我必须从订房的客户桌上获取每个人的数据 经过一些研究和阅读,我认为我需要一个内在的连接 我的问题是,中推荐的方法并不真正适合我的需要,因为我不想在同一个soloumn上加入2列而不

各位程序员好

为了更好地描述我的问题:

我有两张有很多列的表。他们有一些共同点

表1是包含客户ID、名字、姓氏、公司、街道、Zipcode、城市、类别等的客户表

表2是预订表,包括名字、姓氏、公司、街道、邮政编码和城市。表2还列出了科隆房间ID、日期、客户ID和其他信息。 愚蠢的事情是:客户ID在某些条目中是空的

现在我必须从订房的客户桌上获取每个人的数据

经过一些研究和阅读,我认为我需要一个内在的连接

我的问题是,中推荐的方法并不真正适合我的需要,因为我不想在同一个soloumn上加入2列而不是2次

这是我目前的疑问:

'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'
我需要的是一个提示,一个解释或一个链接,帮助我想出一个解决方案,我将非常感谢。
关于这个问题,我有点晕过去了。我希望你能帮助我。

如果我的答案错了,很抱歉,但我不确定我是否正确回答了问题,但无论如何,我会尽力回答这个问题。
'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'
join的目标是能够查询多个相关表以获取这两个表中的数据,我想您已经知道了,但问题是,两个表之间需要一个链接区域,它应该是唯一的,换句话说,第二个表中的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

我希望我回答了您所需要的。

重新阅读您的答案3次后,我不确定是否正确理解了您的答案。请您进一步解释一下好吗?从customer表中选择列,然后给它一个别名tbl1,然后加入booking表a,给它一个别名tbl2,条件是某个列具有searchterms,然后将其分组为您需要的内容。加入需要一个条件,这是两个表中都存在的一列,它们之间具有公共性。哦,这就是你的意思。我已经知道了,但是谢谢你的解释:)问题是我需要将来自两个不同列(firstname和lastname)的数据作为一个,以便比较这两个表。我认为你非常理解我的问题。问题是,预订表中的客户id在某些条目中丢失,几乎不可能找到并插入它们。这个错误是由于在我被命令创建现有系统的小型扩展之前几年编程接口的家伙造成的。除了这个问题,我的建议是运行一个脚本来更新缺少的字段并填充缺少的数据,并在表中创建所需的字段,这样以后就不会发生这样的事情,然后使用这种查询。至于更新丢失的数据,您可以对可用数据运行一个查询来检索每个表的customer\u id,然后对另一个表执行一个更新查询。我不知道它是否会引起轰动,但这就是我如何维护数据的方法。好的,我试试看。因此,“数据维护”的脚本大致如下:
步骤1:从客户表中获取firstname、lastname、ID和address步骤2:将firstname、lastname和address与预订表中的所有条目进行比较步骤3:如果我找到匹配项,我将customer表中的ID放入booking表中的customer_ID步骤4:重复1到3,直到我通过customer表中的所有条目
感谢您的帮助Labib Ismaiel:)运行数据维护脚本后,我尝试了您的查询,它提供了我需要的数据。将正确的条件放入
,其中
-部分不应该是这样的问题。关于您的查询有一点:它应该是
INNERJOIN
而不是
INNERJOIN
,但这是一个可能发生在每个人身上的小错误。我非常感谢你,你帮了我很大的忙。不客气,这就是我们来这里的目的,谢谢你通知我这个错误,我现在改正了,祝你好运。