2013-11-21 110 views
-1

我試圖做一個簡單的左連接,同時使用表的別名,從兩個表中這種格式返回所有的值:如何使用表的別名與左連接返回MySQL數據和重複列

[Alias1] => Array 
    (
     [id] => 1 
     [city] => bay area 
     [state] => CA 
    ) 

[Alias2] => Array 
    (
     [id] => 1 
     [city] => san francisco 
     [baseball_team] => giants 

    ) 

這是我很簡單mysqli_query:

$result = mysqli_query($sql, SELECT Alias1.id, Alias1.city, Alias1.state, Alias2.id, Alias2.city, Alias2.baseball_team FROM database.table1 AS Alias1 LEFT JOIN database.table2 AS Alias2 ON Alias1.id = Alias2.id) 

爲了獲得滿意的結果...我用:

while($row = mysqli_fetch_array($result)) 
{ 
    $data[] = $row; 
} 
print_r($data);die(); 

問題:數據打印出這樣:

[0] => Array 
     (
      [0] => 1 
      [id] => 1 
      [1] => bay area 
      [city] => bay area 
      [2] => CA 
      [state] => CA 
      [3] => 1 
      [4] => san francisco 
      [5] => giants 
      [baseball_team] => giants 
     ) 

其他信息:我本來試圖讓使用mysql_fetch_assoc($結果)的數據... ...但重複列不返回的。

+0

顯示一些表結構,我相信我可以幫助...我會得到所需的數組使用PHP和離開查詢的方式是...我只需要知道一些列名稱... *沒有多大幫助。 – amaster

+0

嘿!我更新了mysqli_query以顯示列名。感謝您的幫助! – JustusKersey

+0

請參閱下面的答案,瞭解我將如何完成/已完成 – amaster

回答

0

相反的:

$data[] = $row; 

使用此形成你想要的數據數組:

$data['Alias1'] = array(
    "id"=>$row['id'], 
    "city"=>$row['1_city'], 
    "state"=>$row['state'], 
); 
$data['Alias2'] = array(
    "id"=>$row['id'], 
    "city"=>$row['2_city'], 
    "baseball_team"=>$row['baseball_team'], 
); 

,或者,如果你希望多行,你需要使用類似:

$data[] = array(
    "Alias1" => array(
     "id"=>$row['id'], 
     "city"=>$row['1_city'], 
     "state"=>$row['state'], 
    ), 
    "Alias2" => array(
     "id"=>$row['id'], 
     "city"=>$row['2_city'], 
     "baseball_team"=>$row['baseball_team'], 
    ), 
); 

注意: 如果您的城市值在你的兩個表中是不同的,那麼你應該使用一個別名,這樣你就可以以不同的方式拉另一個。如果他們是相同的,我建議你不要在數據庫中列出兩次,因爲這是複製數據並使數據庫非規範化。

編輯: 您的查詢應該是上面這些別名像

SELECT Alias1.id, Alias1.city AS 1_city, Alias1.state, Alias2.id, Alias2.city AS 2_city, Alias2.baseball_team FROM database.table1 AS Alias1 LEFT JOIN database.table2 AS Alias2 ON Alias1.id = Alias2.id 

見編輯答案。

+0

是的。城市的價值是不同的(只是更新後)。你的第一反應很好,除非城市價值不同(如你所問)。我在查詢中使用別名。我很確定我正確地使用它們。它似乎像mysql_fetch_array,會有一些對別名的引用...但我沒有看到任何? – JustusKersey

+0

@JustusKersey請在我的答案中查看我的編輯,以瞭解如何爲具有相同名稱的列使用別名。您可以擁有表格的別名,您可以使用列的別名。請參考此答案:http://stackoverflow.com/a/17715434/1707323 – amaster