2017-03-06 47 views
0

我的SQL查询MySQL查询爆炸有两个表的连接

SELECT 
    team.id, 
    team.atitle, 
    team.etitle, 
    team.cup_id, 
    team.logo, 
    team.modarb, 
    team.count_id, 
    team.link AS tlink, 
    country.atitle AS name, 
    country.etitle AS ename, 
    cup.id AS catid, 
    cup.link, 
    cup.description, 
    cup.name AS cupname 
    FROM cup LEFT JOIN team ON (cup.id IN (". implode(', ', 'team.cup_id') .")) 
    LEFT JOIN country ON (country.id = team.count_id) 
    where cup.id='5' 

行team.cup_id这个样子5,4,3, 需要知道如何使用破灭在MySQL查询

+4

我投票结束这个问题作为题外话,因为它没有显示任何研究或努力到可能的解决方案。 – Sebas

+0

好吧,你正试图在那里爆一个字符串。你可能想阅读:http://ca2.php.net/implode – miken32

+0

你正在混合PHP和MySQL。他们处于不同的执行级别,您不能像这样合并它们。 – chris85

回答

0

你应该修正你的数据结构,所以你没有存储id列表作为一个字符串。这样做是错误的,错误的,错误的:

  • 将数字作为字符串存储是错误的。
  • 在没有正确声明外键引用的情况下在表中包含ids是错误的。
  • 当SQL提供存储列表的好方法时,将列表存储在单列中是错误的:表。

万一无法修复的数据结构,你可以这样做:

FROM cup LEFT JOIN 
    team 
    ON find_in_set(cup.id, team.cup_id) > 0 LEFT JOIN 
    country 
    ON (country.id = team.count_id) 

,直到您解决数据在形式上SQLish我只提供这是一个权宜之计。