2014-10-30 107 views
0

這很好,但現在我想加入第三張名爲「房屋」的表格。但前提是houses.owner等於p.id。如果沒有houses.owner等於p.id不選擇。UNION的問題MySQL

當前SQL的作品

-- Select player AND if he is member of a guild then get rank and guild 
SELECT p.id, p.account_id, p.group_id, p.name, p.sex, p.level, p.vocation, p.town_id, p.lastlogin, p.comment, p.deleted, p.online, p.rank_id, gr.name AS rank, g.name AS guild 
     FROM players p 
     INNER JOIN guild_ranks gr ON gr.id = p.rank_id 
     INNER JOIN guilds g ON g.id = gr.guild_id 
     WHERE p.name = :name and p.rank_id > 0 
     UNION ALL 
      SELECT p.id, p.account_id, p.group_id, p.name, p.sex, p.level, p.vocation, p.town_id, p.lastlogin, p.comment, p.deleted, p.online, p.rank_id, '' AS rank, '' AS guild 
      FROM players p 
      WHERE p.name = :name AND p.group_id < 5 AND p.rank_id = 0 

我曾嘗試加入:

,但它給了我:

The used SELECT statements have a different number of columns 
+0

我希望你需要將空白字符串轉換爲與第一個查詢相同的數據類型。 – 2014-10-30 20:39:47

+0

排除所有列,然後慢慢地將它們添加回來進行故障排除。從文字'1'開始,然後使用p.id,然後使用p.id,p.account_id等,直到查詢中斷。 – 2014-10-30 20:46:26

回答

0

p.rank_id '' 秩 '' AS公會

問題在第二個。

第一個查詢有3列,其中是2.添加另一列,它將工作。看起來你需要一個排名和一個公會,你所在的隊伍的隊伍名字爲