2013-04-17 68 views
-2

我新的PHP和MySQL,我試圖寫一個PHP腳本來查詢一個MySQL表中的所有數據。 我花了幾個小時尋找計算器但不要上一些不太瞭解的一樣How to select unique values from a table?MYSQL + Select 2 columns - 1 being Unique如何選擇從MySQL表,其中第1列和第2列的值是唯一

我有一個表與「位置」欄和「地址」欄,並與其他一些列類似的問題的答案關於位置的信息等。位置是例如商店的名稱。地址欄包含該商店的街道地址。

一家店,有時有不同地址的多個網點,我需要有一個查詢只顯示多次,顯示錶中的所有數據與位置如果地址是唯一的。

我有PHP連接數據庫工作的數據庫和選擇,但需要與MySQL查詢幫助。

我已經使用了GROUP BY功能上的位置,但所有地址得到相同位置之下。

這是我用,但只有獨特的位置得到顯示。

<?php 
mysql_connect("localhost","username","password"); 
mysql_select_db("dbname"); 
$sql=mysql_query("SELECT * from table GROUP BY location"); 
while($row=mysql_fetch_assoc($sql)) 
$output[]=$row; 
print(json_encode($output)); 
mysql_close(); 
?> 

如何查詢允許多次顯示位置(如果地址是唯一的)?

請多關照..

不知道如何發佈表結構,但是這是我可以從myphpadmin

**Column**  **Type**  **NULL**  **Comments** 
_id    int(11)   No  auto_increment 
location   text    No  Shop Name 
address   text    No  Shop Address 
suburb   varchar(30)  No   
state   varchar(3)  No   
longitude  float    No  longitude 
latitude   float    No  latitude 
date    date    No   
time    time    No   

得到什麼,我以後是一個唯一的地址的所有位置。一些地點將具有相同的名稱和相同的地址,但是一些地點將具有相同的名稱,但具有不同的地址。 例如..如果表看起來像

**Location**  **Address** 
Target   Pacific Fair 
Kmart   Pacific Fair 
Kmart   Robina 
Kmart   Southport 
Target   Pacific Fair 
Target   Tweed City 
Kmart   Pacific Fair 
Best and Less Pacific Fair 

我想要的結果顯示

**Location**  **Address** 
Target   Pacific Fair 
Target   Tweed City 
Kmart   Pacific Fair 
Kmart   Robina 
Kmart   Southport 
Best and Less Pacific Fair 
+1

使用mysqli_因爲mysql_ *已被棄用 –

+0

你能發佈你的表結構? – David

+0

@ Brett0你能解釋更多關於這個「A店,有時有不同地址的多個網點,我需要有一個查詢,顯示從只顯示多次,如果地址是唯一的位置表中的所有數據。」 –

回答

1

如果我正確理解你的問題,你需要組由兩個位置和地址:

SELECT location, address FROM table GROUP BY location, address 

,或者你可以使用DISTINCT:

SELECT DISTINCT location, address FROM table 
+0

謝謝@fthiella我曾經試過這個,但是在我的代碼中一定有其他錯誤。這現在工作很好。 – Brett0

0

我假設你可以有更多的情況下比你在的數據顯示。你可以在COL1 NULL值,你可以有隻發生在COL1或僅在COL2名稱等

SELECT a.name, c1.`count`, c2.`count` 
FROM (SELECT col1 AS name FROM `Table` UNION SELECT col2 FROM `Table`) a 
LEFT JOIN (SELECT col1, COUNT(*) AS `count` FROM `Table` GROUP BY col1) c1 
ON a.name = c1.col1 
LEFT JOIN (SELECT col2, COUNT(*) AS `count` FROM `Table` GROUP BY col2) c2 
ON a.name = c2.col2; 

說明: 派生表是出現在任一列中的所有名的工會。然後,讓兩個派生表,一個與每個從COL1每個名字和它是如何出現的次數計數,然後在COL2名其他類似衍生的故事。

+0

感謝您的快速回復@Zahid。 col1和col2永遠不會有NULL值,因爲它們都是輸入行所必需的。我不太瞭解派生表。將嘗試上面的代碼,看看我最終。 – Brett0

相關問題