Mam nietypowy tabel SQL (nie mój), który ma następujące pola (między innymi): last_name, primary_name, secondary_name
, oznaczające małżeństwa. Przyjmuje się, że ostatnie nazwisko jest udostępniane (niezbyt nowoczesne, wiem), a jeśli nie jest to para, to albo primary_name
lub secondary_name
może mieć wartość NULL. (Tabela ma również kilka duplikatów.)Czy mogę utworzyć zapytanie SQL, wykonując dwa dopasowania w każdym wierszu?
Co chcę zrobić, to uzyskać listę wszystkich nazw ("pierwszy raz") w bazie danych, alfabetycznie w zwykły sposób. Teraz robię dwie wejściówki za pośrednictwem bazy danych za pomocą PHP i 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
Ale efekt końcowy nie jest alfabetyczna, ponieważ drugi przebieg rozpoczyna się od nowa.
Jak mogę uzyskać wszystkie nazwiska na raz, alfabetycznie całkowicie? Czy jest jakiś sposób, aby to zrobić w SQL, czy muszę zbudować dwie tablice i ponownie je alfabetować w PHP?
EDIT Baza wygląda mniej więcej tak:
last_name primary_name secondary_name
----------------------------------------
Abrams Joe Susan
Miller Sam Abby
pożądany wynik byłby coś takiego:
["Joe Abrams","Susan Abrams","Abby Miller","Sam Miller"]
Zamiast tego, jeśli pierwsze przejście pobiera wszystkie mężów i tym Drugie podanie wszystkich żon, otrzymuję coś takiego:
["Joe Abrams","Sam Miller","Susan Abrams","Abby Miller"]
Czy możesz podać przykład wyjścia, które chcesz wyświetlić (używając 4 lub 5 różnych kombinacji nazw)? –