如何在mysql中用一个查询从两个不同的表中选择两个记录

时间:2010-01-28 23:33:21

标签: php mysql get sql-like

如何在mysql中用一个查询从两个不同的表中选择两条记录?

我正在使用的搜索查询

$search = $_GET['gd']
$arama_sonuc = mysql_query("select * from mp3 where baslik like '%$search%'");
好吧,没关系。它显示了我从mp3表的结果。但是使用相同的查询我还需要在HABERLER表上搜索一些东西......我该怎么办?

2 个答案:

答案 0 :(得分:4)

使用UNION命令 http://dev.mysql.com/doc/refman/5.0/en/union.html

select * from mp3 where baslik like '%$search%'
UNION 
select * from HABERLER where baslik like '%$search%'

(可能是它们具有相同数量的列和相同类型等)

答案 1 :(得分:4)

问题不明确,您可能需要以下结构之一

SELECT *
FROM mp3
WHERE baslik like '%$search%'"
UNION
SELECT *
FROM HABERLER
WHERE baslik like '%$search%'"

SELECT * 
FROM mp3 M
JOIN HABERLER H on H.some_field = M.some_field_in_mp3_table
WHERE baslik like '%$search%'"

UNION构造允许在一个结果集中收集来自不同表的记录;记录需要在结构上相同,即具有相同的列(不一定命名相同但具有相同类型的数据)。结果集包括满足第一个查询的所有行以及满足第二个查询的所有行(可能根据ALL关键字消除重复项)。
如果例如mp3和HABERLER表包含相同类型的记录(例如:关于音乐文件的信息),则UNION非常有用。

JOIN构造允许获取一个结果集,该结果集包含从第一个表中的列和第二个表中的列创建的记录。第二张表中的记录是根据他们对JOIN的“ON条件”的满意度来选择的 如果两个表包含补充信息,JOIN很有用(例如mp3包含有关mp3文件的信息,HABERLER包含有关音乐家的信息; mp3在其中一列中引用音乐家,而HABERLER有一列用于识别音乐家相同的价值)