次のフィールド (特に) を持つ珍しい SQL テーブル (私のものではない) があります: last_name, primary_name, secondary_name
、夫婦を示します。姓は共有されていると見なされ (あまり現代的ではないことはわかっています)、カップルでない場合は、 または のいずれかprimary_name
がsecondary_name
NULL になる可能性があります。(テーブルにはいくつかの重複もあります。)
私がやりたいことは、データベース内のすべての名前 (「最初と最後」) のリストを、通常の方法でアルファベット順に取得することです。現在、PHP と PDO を使用して、データベースを介して 2 つのパスを実行しています。
$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
ただし、2 番目のパスが最初からやり直されるため、最終結果はアルファベット順ではありません。
すべての名前を一度に完全にアルファベット順に取得するにはどうすればよいですか? SQL でこれを行う方法はありますか、または 2 つの配列を作成し、後で PHP でそれらを再アルファベット化する必要がありますか?
編集 データベースは次のようになります。
last_name primary_name secondary_name
----------------------------------------
Abrams Joe Susan
Miller Sam Abby
望ましい出力は次のようになります。
["Joe Abrams","Susan Abrams","Abby Miller","Sam Miller"]
代わりに、最初のパスですべての夫を取得し、2 番目のパスですべての妻を取得すると、次のような結果が得られます。
["Joe Abrams","Sam Miller","Susan Abrams","Abby Miller"]