我有一個不尋常的SQL表(不是我的),它有以下領域(其中包括):last_name, primary_name, secondary_name
,表示已婚夫婦。假設姓氏是共享的(不是很現代,我知道),如果它不是一對,那麼primary_name
或secondary_name
可能是NULL。 (該表還有幾個副本。)我可以讓SQL查詢在每一行上做兩個匹配嗎?
我想要做的是獲取數據庫中所有名稱(「第一個最後」)的列表,按通常方式進行字母順序排列。現在,我通過數據庫使用PHP和PDO做兩遍:
$qstr = "SELECT DISTINCT primary_name, last_name
FROM members
WHERE primary_name IS NOT null
ORDER BY last_name, primary_name";
$sth = $dbh->prepare($qstr);
$sth->execute();
// output the results
$qstr = "SELECT DISTINCT secondary_name, last_name
FROM members
WHERE secondary_name IS NOT null
ORDER BY last_name, secondary_name";
$sth = $dbh->prepare($qstr);
$sth->execute();
// output the new results
但最終的結果是不是按字母順序排序,因爲第二次重新開始。
我怎樣才能一次獲得所有的名字,完全按字母順序排列?有沒有辦法在SQL中做到這一點,或者我需要構建兩個數組,然後在PHP中對它們重新進行字母化?
編輯 數據庫看起來是這樣的:
last_name primary_name secondary_name
----------------------------------------
Abrams Joe Susan
Miller Sam Abby
所需的輸出會是這樣的:
["Joe Abrams","Susan Abrams","Abby Miller","Sam Miller"]
相反,如果第一遍得到所有的丈夫和第二次通過所有的妻子,我得到這樣的事情:
["Joe Abrams","Sam Miller","Susan Abrams","Abby Miller"]
你可以發表你想看到的輸出的例子(使用說4或5個不同的名稱組合的例子)? – 2012-04-24 14:27:20