2013-04-25 27 views
8

Web sitemdeki minecraft sunucumdaki başarıları görüntülemek için çalışıyorum. Ama işe yaramayacağım.İçinde aynı sütun adları olan 2 tabloya katılın

function achievements() { 
    global $id; 
    $sql="SELECT * FROM achievements 
      INNER JOIN stats ON achievements.type=stats.type 
      INNER JOIN stats ON achievements.block=stats.block 
      INNER JOIN stats ON achievements.data=stats.data 
      INNER JOIN stats ON achievements.value=stats.value 
      WHERE player_id = $id"; 
    $result=mysql_query($sql) or die(mysql_error()); 
    $rows=mysql_fetch_array($result); 
} 

seçtiğim tablodan sütun "türü" almak için $rows['achievements.type']; ve $rows['stats.type']; kullanmak mümkün olacak, ya bunu yapmak için başka bir yolu var mı?

Sütun ve tablo adları, kullandığım eklenti tarafından tanımlanır, böylece adlar değiştirilemez. Eğer onlar sütunlar sizi ver $rows

+0

'SELECT *, stats.type AS stats_type' sonra '$ satırlar' ['stats_type'] olarak erişebilirsiniz;' '$ $ satırlar olarak dikkatli olun ['type'] son ​​istatistik' stats, başarıları 'olacaktır – Waygood

cevap

17

neden çalışmadığının nedeni (kendi görüşüme göre) sunucunun sütun adlarını gerektiği gibi nasıl işleyeceği konusunda biraz kafa karıştırıcıdır. Amacıyla her belirli sütunlar adlarını almak sen istediğiniz varsayarak örn

SELECT achievements.*, 
     a.Name as TypeName, 
     b.Name AS BlockName, 
     c.Name as DataName, 
     d.Name AS ValueName 
FROM achievements 
     INNER JOIN stats a ON achievements.type = a.type 
     INNER JOIN stats b ON achievements.block = b.block 
     INNER JOIN stats c ON achievements.data = c.data 
     INNER JOIN stats d ON achievements.value = d.value 
WHERE player_id = $id 

, sütun gibi katılmak isteyen aynı ada sahip her masada bir takma ad ekleyin çalışmak.

1

O ile ...

SELECT * FROM achievements AS ac INNER JOIN stats as st 

Yapabilirsin daha sonuçları takma tablo adları için diğer ad daha kolay

SELECT `achievements`.`type` AS `Achieve-Type` 
FROM `achievements` 

Şimdi böyle değerler elde edebilirsiniz: onlara örnek olarak bir takma ad SELECT ederken sahip olmak istiyorum $rows['Achieve-Type'];

4

bunları seçtiğinizde daha ayırt edilebilir böylece isterlerse

İlgili konular