2017-03-06 31 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我只提供這是一個權宜之計。