基于表名使用php/mysql分离数据

基于表名使用php/mysql分离数据,php,mysql,Php,Mysql,我想做的是查询我的数据库“sc2”并搜索3个表中的某些信息 我有三张桌子 === Matches ==== matchid matchname casterid eventid === Casters === casterid casteralias casterurl === Events === eventid eventname 我当前使用的SQL语句在一定程度上起作用: $sql = " SELECT m.title AS matchTitle, c.casteralias m

我想做的是查询我的数据库“sc2”并搜索3个表中的某些信息

我有三张桌子

===
Matches
====
matchid
matchname
casterid
eventid

=== 
Casters
===
casterid
casteralias
casterurl

===
Events 
===
eventid
eventname
我当前使用的SQL语句在一定程度上起作用:

$sql = "
SELECT m.title AS matchTitle, c.casteralias matchCaster, m.dateadded matchDate, 
comp.eventname FROM matches m
LEFT JOIN 
casters AS c
ON 
c.casterid = m.casterid
LEFT OUTER JOIN
competitions AS comp
ON m.eventid = comp.id
WHERE m.title LIKE '%".$search."%'
OR 
c.casteralias LIKE '%".$search."%'
OR 
comp.eventname LIKE '%".$search."%'
ORDER BY
m.dateadded
DESC";
它提取了必要的信息,但我想在结果集中区分原始表,因此我可以根据找到的结果来自哪个表来处理结果

matchTitle  matchCaster matchDate   eventname
Hero vs Revival HuskyStarcraft  2013-06-05 15:54:05 \N
Idra vs Stephano    HuskyStarcraft  2013-05-30 13:28:05 \N
Stephano vs BabyKnight  HuskyStarcraft  2013-05-29 14:31:46 WCS Europe
Trimaster vs Destiny    HuskyStarcraft  2013-05-28 18:26:45 \N
RorO vs Innovation  HuskyStarcraft  2013-05-27 22:04:28 \N
Psy vs Camara   HuskyStarcraft  2013-05-26 02:13:10 \N
Minigun vs Maker    HuskyStarcraft  2013-05-23 20:05:00 \N
结果似乎不错。。我只需要确定一种方法,根据最初搜索的内容来区分搜索结果的实际显示。因此,如果用户搜索某个施法者,而不是获取最近的匹配信息,他们将获得该施法者的缩略图以及该特定施法者最近的施法


我希望我能说清楚,并提前感谢您提供的任何建议。:)

有点乱,但这就是你想要的吗

Select * from (
SELECT "Matches" as Source, m.title AS matchTitle, 
c.casteralias as matchCaster, m.dateadded as matchDate, comp.eventname 
FROM matches m
LEFT JOIN casters AS c ON c.casterid = m.casterid
LEFT OUTER JOIN competitions AS comp ON m.eventid = comp.id
WHERE m.title LIKE '%".$search."%'
Union
SELECT "Caster", m.title, 
c.casteralias,m.dateadded, comp.eventname 
FROM matches m
LEFT JOIN casters AS c ON c.casterid = m.casterid
LEFT OUTER JOIN competitions AS comp ON m.eventid = comp.id
WHERE c.casteralias LIKE '%".$search."%'
Union
SELECT "Event", m.title, 
c.casteralias,m.dateadded, comp.eventname 
FROM matches m
LEFT JOIN casters AS c ON c.casterid = m.casterid
LEFT OUTER JOIN competitions AS comp ON m.eventid = comp.id
WHERE comp.eventname LIKE '%".$search."%') allLikes

ORDER BY matchDate DESC

你能举个例子吗?当前结果集中哪些列不明确?SQL不是读心术,因此,如果您的目的是基于查询检索其他信息,那么在非数据库代码中,您应该扩充查询以请求所需的额外信息,或者单独获取。感谢您的帮助。我慢慢地但肯定地明白了:)工作起来很有魅力。我不确定这是否是我想要的方式,但我肯定欣赏代码,并将研究它以供将来参考。谢谢你,托尼!