mysql搜索并比较3个表

时间:2015-06-02 12:09:07

标签: mysql

我在mysql数据库中有3个表

表1(invoice_items)

invoice_id model_no

表2(发票)

invoice_id customer_no

表3(customer_details)

customer_no email_address

我想在table1中的model_no中搜索所有具有相同model_no的发票

但我想要的真实数据是购买上述模型的客户的电子邮件地址,但我必须通过3个表格来获取它

是否有搜索查询将输出3个表的搜索/比较?

抱歉,希望我已经为我的答案提供了足够的信息 我正在使用mysql查询浏览器

提前谢谢大家 问候 汤姆

3 个答案:

答案 0 :(得分:0)

目前无法对此进行测试,但基本思路是首先在表格customer_noJOIN之间使用invoice_items查询已购买模型的所有invoices,如此:

SELECT b.customer_no FROM invoice_items a, invoices b WHERE b.invoice_id = a.invoice_id

其次,使用MySQL IN关键字将customer_details表加入此结果集,如果email_address存在,则选择customer_no。这将导致查询,例如,或类似于:

SELECT c.email_address FROM customer_details c WHERE c.customer_no IN ( SELECT b.customer_no FROM invoice_items a, invoices b WHERE b.invoice_id = a.invoice_id )

答案 1 :(得分:0)

简单解决方案使用INNER JOIN将表连接在一起。

INNER JOIN关键字选择两个表中的所有行,只要列之间匹配即可。例如。如果"发票中有行#34;在" invoice_item"中没有匹配的表格,这些发票将不会列出。

enter image description here

Visual Representation of SQL Joins

Select cus.emailaddress, inv1.invoice_id, cus.customer_no
From invoice_item inv1
Inner Join invoices inv2 using (invoice_id)
Inner Join customer_detail cus using (customer_no)
And inv1.model_no =xxxx;

答案 2 :(得分:0)

非常感谢你的想法......我设法完成了它的工作

请参阅下面的工作解决方案

$(document).ready(function () {
            $('.show').click(function () {
                $('.header-extra').addClass("down"); 
            });
            $('.hide').click(function () {
                $('.header-extra').removeClass("down"); 
            });
        });