0
  • tableA 列:homeid,awayid,date
  • tableB 列:id、logo、schoolname

tableB ID 与 tableA 中的 ID 匹配

也许这行不通,但我必须认为它比在 PHP 中循环更好。

我想要特定日期的这样的结果:

hometeamname hometeamlogo awayteamname awayteamlogo

都在一条线上

那可能吗?

4

5 回答 5

1

执行两次连接以获取主客场数据。

select b1.schoolname hometeamname, b1.logo hometeamlogo,
       b2.schoolname awayteamname, b2.logo awayteamlogo
from tableA a
join tableB b1 on b1.id = a.homeid
join tableB b2 on b2.id = a.awayid
where a.date = 'yyyy-mm-dd'
于 2013-08-16T19:41:52.937 回答
0

您可以加入tableB两次,使用两个不同的别名ha

SELECT
  h.schoolname hometeamname,
  h.logo hometeamlogo,
  a.schoolname awayteamname,
  a.logo awayteamlogo
FROM
  tableA inner join tableB h on tableA.homeid=h.id
  inner join tableB a on tableA.awayid=a.id

然后你可以按日期过滤。

于 2013-08-16T19:40:47.563 回答
0

在表 A 上,表 B 的 id 是多值的?

如果是;

select * from tablea
inner join tableb on tableb.id IN(tablea.awayid)

如果不

select * from tablea
inner join tableb on tableb.id = tablea.awayid

我不太确定你想要什么

于 2013-08-16T19:41:00.420 回答
0

加入,类似(没有检查它,所以可能有语法错误):

select H.schoolname as hometeamname, H.logo as hometeamlogo, 
       W.schoolanme as awayteamname, W.logo as awayteamlogo 
       from tableA as A join tableB as H on (tableA.homeid = H.id) 
       join table B as W on (tableA.homeid = W.id);
于 2013-08-16T19:41:15.827 回答
0

尝试这个:

我没有对此进行测试,但它应该可以工作。

SELECT home.schoolname, home.logo, away.schoolname, away.logo
FROM tableB home, tableB away
WHERE (home.id, away.id) IN (SELECT homeid, awayid FROM tableA)
于 2013-08-16T19:42:00.010 回答