Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: jedno zapytanie do dwóch kolumn tej samej tabeli
Forum PHP.pl > Forum > Bazy danych > MySQL
marvofmay
Przypuśćmy, że jest tabela "user" o kolumnach "fname", "lname". Czy jest możliwe jednym zapytaniem uzyskać najpierw wszystkie nazwiska (lname) posortowane alfabetycznie a następnie wszystkie imiona (fname) posortowane alfabetycznie?

Z góry dziękuję za odpowiedź.
daniel1302
http://rekurencja.pl/bazy-danych/mysql/kil...ysql-union.html

Tutaj jest wszystko idealnie opisane.

A jeśli byś sobie nie poradził to przyszło mi do głowy takie rozwiązanie:
id imie nazwisko
1 daniel ananas
2 ewa banan
3 tomasz dynia
4 roman auto

  1. (SELECT id, imie, nazwisko, NULL AS nazw, imie AS imie1
  2. FROM test)
  3. UNION ALL
  4. (SELECT id, imie, nazwisko, nazwisko AS nazw, NULL AS imie1
  5. FROM test)
  6. ORDER BY nazw, imie1 ASC
marvofmay
Chodzi o to, żeby w tabeli będacej wynikiem zapytania, były wiersze zawirające tylko nazwiska posortowane alfabetycznie, a następnie (kolejne wiersze) imiona posortowane alfabetycznie.
mmmmmmm
I oczywiście sprawdziłeś, to co @daniel1302 napisał?
marvofmay
Oczywiście, że sprawdziełem. I jego zapytanie dawało tabelę wyników, w której były 2 kolumny. A pytanie było jasno sformułowane : jednym zapytaniem najpierw nazwiska (wiersze) a potema imiona (wiersze).
daniel1302
  1. (SELECT imie AS kolumna, NULL AS nazw, imie AS imie1
  2. FROM test)
  3. UNION ALL
  4. (SELECT nazwisko AS kolumna, nazwisko AS nazw, NULL AS imie1
  5. FROM test)
  6. ORDER BY nazw, imie1 ASC


kolumny imie1 i nazw używane są do sortowania, więc jeśli chcesz sortować wg 2 danych to nic nie poradzisz, chyba, że napiszesz procedurę w mysql

http://www.eioba.pl/a/1kfe/krotko-o-funkcj...edurach-w-mysql

Jeśli chcesz to wieczorem napiszę ci procedurę, ale nie wszędzie ci zadziała, więc zorientuj się czy wogóle jest to warte
marvofmay
Nie pisz. To było pytanie teoretyczne. Znam się trochę na SQL i dostałem takie polecenie , jak napisałem na początku POSTA i nigdy z takim czymś się nie spotkałem, tzn. zapytanie dotyczy dwóch kolumn a wyniki w wierszach jeden po drugim . Dodam, że nie miała to być porocedura.
daniel1302
Jak nie procedura to tylko union
wiiir
Co sie nie da i do czego procedure?? Chyba ze czegos nie rozumiem.

  1. SELECT kolumna FROM (SELECT 1, nazwisko AS kolumna FROM test
  2. UNION ALL
  3. SELECT 2, imie AS kolumna FROM test
  4. ORDER BY 1 ASC,2 ASC
  5. ) t



dla 3 rekordow w tabeli test dostaniesz w wyniku 6 rekordow, pierwsze 3 to nazwiska kolejne 3 to imiona
O to chodzilo?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.