2009-12-08 104 views
1

我有3个不同的表格结构,我会称它们为A,B,C。Mysql从3个表格中选择

我需要做在同一时间所有的3个表进行搜索,让我需要对:

A.name LIKE%谷歌%B.company LIKE%谷歌%和C.company LIKE% Google%

对于提到的“查询类型”有一个查询可能吗?

最好的问候!

这里是我要找的

Select from table A where A.name LIKE %something% inner join B on b.company LIKE %something% and after that I need to do the samething for table C..but I don't know how... 

查询:

SELECT name FROM firmen WHERE name LIKE '%Felsengartenkellerei Besigheim eG%' 
    UNION 
    SELECT firma FROM daten WHERE firma LIKE '%Felsengartenkellerei Besigheim eG%' 
UNION 
    SELECT firma FROM ver WHERE firma LIKE '%Felsengartenkellerei Besigheim eG%' 
+1

你可以详细介绍一下你想做什么吗?这三张表是以某种方式相关的?模式结构将会非常有用。 – 2009-12-08 02:18:41

+0

这3个表是否相互独立?只是为了详细说明dlo的提示......在这两个表中是否有任何外键关系? – 2009-12-08 02:21:08

+0

不,完全不同的表格结构...我需要对它们进行搜索...并且如果我找到了它正在寻找的用户,我需要显示它!以下是需要搜索的字段名称: 对于表A - >名称对于表B - >公司对于表C - >公司 – Uffo 2009-12-08 02:24:40

回答

2

不知道你正在试图做的,因为我们没有模式到底是什么,但大概A是公司的表格,其中'名称'字段对应于B和C中的外键“公司”字段,如果那样的话那么你有些事情是这样的:

SELECT * FROM A, B, C 
    WHERE A.name LIKE '%Google%' 
    AND B.company = A.name 
    AND C.company = A.name 

编辑,所以从你的评论中你说他们是而不是外键,你想选择所有具有特定字段'LIKE'Google的行,你只需要一次做一个:

SELECT * FROM A WHERE name LIKE '%Google%' 
SELECT * FROM B WHERE company LIKE '%Google%' 
SELECT * FROM B WHERE company LIKE '%Google%' 

如果所有这三个表都具有相同的模式(或者它们有几个共同的字段,并且只是按照相应的顺序选择这些字段),如果您想加入这些3个查询的联合结果在一起。

假设他们的所有3个有“URL”或“webaddr”领域,它们分别具有“递减”,“说明”和“信息”字段:

SELECT url, desc   FROM A WHERE name LIKE '%Google%' 
UNION 
SELECT webaddr, description FROM B WHERE company LIKE '%Google%' 
UNION 
SELECT url, info   FROM B WHERE company LIKE '%Google%' 

有一个很好的解释MySQL中的UNION和UNION ALL的语义tutorialspoint

+0

可以请给我一个例子与联盟如何加入结果请一起,我避风港睡了50个小时,所以现在我想不起来了。谢谢 – Uffo 2009-12-08 02:32:43

+0

更新给UNION – 2009-12-08 02:35:27

+0

的例子我的查询看起来是这样的: SELECT名字从firmen WHERE名称LIKE%Felsengartenkellerei贝西格海姆比如% UNION SELECT公司从回到名单Daten WHERE公司LIKE%Felsengartenkellerei贝西格海姆比如% UNION SELECT公司从任何公司像%Felsengartenkellerei Besigheim eG% 错误: -------------------------- #1064 - 你有你的SQL语法错误;检查与您的MySQL服务器版本相对应的手册,在'%Felsengartenkellerei Besigheim eG% UNION '附近使用正确的语法。SELECT company FROM daten WHERE compan'at line 1 ------------- ---------- – Uffo 2009-12-08 02:38:39