2016-03-29 18 views
0

Ben kart oyunları yönetimi için iki MYSQL tablolar vardır:başka tablodan değerler döndürmek için çalışılıyor

ilkini, Maçlar tablosu:

başka tablo (Oyuncular tablo) oyuncunun kimliği ve adları ile orada
ID ATeam BTeam Player1 Player2 
001 T1 T2 1  2 

: Ben bunu yapmaya çalışıyorum ne

ID Name 
1 Dave 
2 Martin 

player1 (örnek kimliği çalar = 1 için) şu anda atandı tüm maçları almak ve oyuncunun adını değil, kimliği dönmek bir MYSQL SELECT ile olduğunu. Bunu başarmak için, oyuncular tablosunu sorgulamam gerekiyor ama ne kullanacağımı bilmiyorum: INNER JOIN belki?

sonucu olmalıdır:

001 T1 T2 Dave Martin 

yerine

001 T1 T2 1 2 

fikrin var mı?

Teşekkürler!

cevap

2

O basit katılmak sorgusu:

SELECT m.ID, m.ATeam, m.BTeam, p1.Name, p2.Name 
FROM Matches AS m 
JOIN Players AS p1 ON m.Player1 = p1.ID 
JOIN Players AS p2 ON m.Player2 = p2.ID 
WHERE m.Player1 = ? 
+0

'durumunda bir daha iyi bir fikir olacağını katılmak bırakılabilir Mayıs katılmak sol Player1' veya 'Player2' değerinde' Matches''da eksik –

+0

wow işe yaradı, üzgünüm basit bir soru olduğunu biliyorum ama SQL ile aşina değilim ... – Hmorv

+0

Sol birleştirme kullanmam gerekiyordu, ama sadece sorgunuzu kopyaladım ve geri dönüyor Bazen player1 alanında player1 ismi ve tersi? – Hmorv

1
select m.id, m.ATeam, m.BTeam, p1.name, p2.name from matches m inner join player p1 inner join player p2 on m.player1 = p1.id and m.player2 = p2.id; 
1

@Giorgos Betsos cevap ama kullanımı gibi aynı

SELECT Matches.ID, Matches.ATeam, Matches.BTeam, p1.Name, p2.Name 
FROM Matches 
LEFT JOIN Players AS p1 ON (Matches.Player1 = p1.ID) 
LEFT JOIN Players AS p2 ON (Matches.Player2 = p2.ID) 
İlgili konular