2013-11-23 84 views
-2

這是爲了查找玩家,現在如果他們不是公會會員將返回。因此,如果p.rank_id大於零,代替幾個查詢是否可以只加入ranksguilds只有某些領域高於0時才加入

如果這是可能的話,會很棒!

SELECT 
    p.id, 
    p.name, 
    p.sex, 
    p.level, 
    p.city, 
    p.last_login, 
    p.comment, 
    p.skill, 
    r.name AS rank, 
    g.name AS guild 
FROM 
    players p 
INNER JOIN 
    ranks r 
ON 
    r.id = p.rank_id 
INNER JOIN 
    guilds g 
ON 
    g.id = r.guild_id 
WHERE 
    p.name = :name 
+0

如果'排ID = 0'會發生什麼?你會怎麼做?我懷疑你可以在傳遞給sql之前在你選擇的程序中進行測試。 – Edper

+0

如果等級爲0,我想選擇玩家表,但不是連接。 – Kaka

回答

0

嘗試UNION ALL像:

SELECT p.id, p.name, p.sex, p.level, p.city, p.last_login, p.comment, p.skill, r.name AS rank, g.name AS guild 
FROM players p 
INNER JOIN ranks r 
ON r.id = p.rank_id 
INNER JOIN guilds g 
ON g.id = r.guild_id 
WHERE p.name = :name and p.rankid>0 
UNION ALL 
SELECT p.id, p.name, p.sex, p.level, p.city, p.last_login, p.comment, p.skill, '' AS rank, '' AS guild 
FROM players p 
WHERE p.name = :name and p.rankid=0 
+0

就像一個魅力!謝謝 – Kaka

+0

很高興聽到它的作品。快樂編碼和上帝保佑。 – Edper

0

當然可以。添加

AND p.rankid > 0 

WHERE條款,如

WHERE 
    p.name = :name AND p.rankid > 0 
+0

但是我不能搜索沒有排名的球員。你看? – Kaka