Nasıl bir MySQL SOL iki aynı adlı sütunlar sorgusu JOIN erişebilir?

2 Cevap php

İki tablo var.

table_x:

id    INT(11)
tag   INT(11)

table_tags:

id    INT(11)
name  VARCHAR(255)

Sonra aşağıdaki sorgu gerçekleştirmek için PHP kullanabilirsiniz:

SELECT * FROM table_x LEFT JOIN table_tags ON table_x.tag = table_tags.id

Tek sorun: nasıl table_x.id ve table_tags.id sonuçlarında erişebilirim?

Burada PHP kodu:

$query = "SELECT * FROM table_x LEFT JOIN table_tags ON table_x.tag = table_tags.id";
$results = mysql_query($query);

while($row = mysql_fetch_array($results))
{
    // how do I now access table_x.id and table_tags.id ???
}

2 Cevap

Eğer sütun listesindeki sütunları adı:

SELECT 
  table_x.id AS x_id, 
  table_tags.id AS tag_id,
  other, columns, here
FROM table_x LEFT JOIN table_tags 
ON table_x.tag = table_tags.id

Genel olarak, bu açıkça iade yerine (altta yatan tablo yapısı değişiklikleri eğer gerçek sayısını, sırasını, ve değiştirmek için sütun isimlerini neden olabilir) * güvenmek istediğiniz sütunları isim iyi formu olarak kabul edilir. Aynı zamanda, kullanılan (AS kelime, en çok SQL lehçelerde isteğe bağlı) kolaylığı için belirlenen sonuç yeni isimler ile sütun diğer ad olabilir.

O kullanmanız gerekir ki bir açıklamada Update: OP devletler "*". Bu tavsiye edilmese de, bunu yapabilirsiniz:

SELECT 
  table_x.id AS x_id, 
  table_tags.id AS tag_id,
  *
FROM table_x LEFT JOIN table_tags 
ON table_x.tag = table_tags.id

İstediğiniz adlandırılmış sütunlar ve (kötü) "*" tekniğini hem birleştirir. Sizin sütunların ilk iki sütun pozisyonda ve sütun listesinden düzenli pozisyonlarda iki kez, sonuç kümesine dahil edilecektir. Değerler aynı olacaktır.

Bu gibi kullanmak

$ Sorgu = "(table_x.id) AS xid, (table_tags.id) AS tid table_x SOL table_x.tag = table_tags.id ON table_tags JOIN SELECT FROM";

$ Sonuç = mysql_query ($ sorgu);

while($row = mysql_fetch_array($results)) {

**//fetch id of table_x with xid**

 **echo "table_x id: ".$row['xid'];**

//fetch id of table_tags with tid

 **echo "table_tags id: ".$row['tid'];**

}