MySQL JOIN таблицы с двойными именами столбцов

После объединения двух таблиц у меня есть дубликаты имен столбцов. Как я могу различать имена и извлекать данные в PHP.

Таблица услуг:

+----+-------+--------+ | id | price | userID | +----+-------+--------+ | 1 | 435 | 33 | | 2 | 543 | 32 | | 3 | 7646 | 33 | | 4 | 7966 | 31 | | 5 | 394 | 31 | | 6 | 569 | 31 | | 7 | 203 | 32 | | 8 | 439 | 32 | | 9 | 329 | 33 | | 10 | 998 | 31 | +----+-------+--------+ 

Таблица клиентов:

 +----+-------+-------+ | id | name | zip | +----+-------+-------+ | 30 | Joe | 45698 | | 31 | Bill | 87848 | | 32 | Cris | 56879 | | 33 | Sarah | 35411 | | 34 | Nova | 59874 | | 35 | Lo | 99874 | +----+-------+-------+ 

Присоединитесь к ним, используя этот запрос:

 SELECT * FROM services AS s, customers AS c WHERE s.userID=c.id 

Стол:

 +----+-------+--------+----+-------+-------+ | id | price | userID | id | name | zip | +----+-------+--------+----+-------+-------+ | 1 | 435 | 33 | 33 | Sarah | 35411 | | 2 | 543 | 32 | 32 | Cris | 56879 | | 3 | 7646 | 33 | 33 | Sarah | 35411 | | 4 | 7966 | 31 | 31 | Bill | 87848 | | 5 | 394 | 31 | 31 | Bill | 87848 | | 6 | 569 | 31 | 31 | Bill | 87848 | | 7 | 203 | 32 | 32 | Cris | 56879 | | 8 | 439 | 32 | 32 | Cris | 56879 | | 9 | 329 | 33 | 33 | Sarah | 35411 | | 10 | 998 | 31 | 31 | Bill | 87848 | +----+-------+--------+----+-------+-------+ 

Когда я запускаю этот скрипт, я хочу получить два результата в столбцах id (например, 1 и 33 в первой строке):

 $query = "SELECT * FROM services AS s, customers AS c WHERE s.userID=c.id"; $result = $link->query($query); while($var = mysqli_fetch_array($result)) { print_r($var); //I would like to get them similar to this... //$id1 = $var['id']; //$id2 = $var['id']; } 

Результат (обратите внимание, что для обоих столбцов id нет ключа. Первый – [0] => 1 и не имеет именованного ключа):

 Array ( [0] => 1 [id] => 33 [1] => 435 [price] => 435 [2] => 33 [userID] => 33 [3] => 33 [4] => Sarah [name] => Sarah [5] => 35411 [zip] => 35411 ) 

В любом случае, нужно связать ключ с разными идентификаторами, не делая для каждого столбца с двойным именем следующее:

 $query = "SELECT *, c.id AS myNewID FROM services AS s, customers AS c WHERE s.userID=c.id"; 

Единственный способ разграничения между ними – использовать AS для применения псевдонима. Например, что-то вроде этого:

 SELECT s.id AS serviceID, c.id AS customerID FROM services s JOIN cusomters c ON c.id = s.userID; 

Таким образом, вы можете ссылаться на столбцы позже, используя serviceID или customerID , в зависимости от реализации.