私は奇妙なSQLテーブル(鉱山ではありません)を持っています。その中には、特に以下のフィールドがあります。last_name, primary_name, secondary_name
、夫婦を表しています。最後の名前は共有されているものとみなされます(それほどモダンではありません)。カップルでない場合、primary_name
またはsecondary_name
のいずれかがNULLになることがあります。 (テーブルにもいくつかの重複があります)SQLクエリをすべての行で2つの一致にすることはできますか?
私がしたいことは、通常の方法でアルファベット順にデータベースのすべての名前(「最初の最後」)のリストを取得することです。今、私はPHPを使用してデータベースを介して2つのパスを行うと、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でこれを行う方法はありますか?それとも2つの配列を作成し、後でPHPでそれらをアルファベット順に並べ替える必要がありますか?データベースは、このようなものになります
EDIT :
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つの異なる名前の組み合わせを使用しています)?それを解読するために+1は –