Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: UNION czy JOIN?
Forum PHP.pl > Forum > Bazy danych
mario
Witam!!!!!

Mam dosyc spora tabele wykonawcy a w niej kilkadziesiat tysiecy rekordow. Na stronie wykonuje "petelke" z alfabetem ktora powoduje obciazenie bazy, chcialem to samo zrobic jednym zapytaniem polaczonym UNION'em ale nici..... pomimo aliasow w wyniku mam tylko pierwsze zapytanie. Oto czesc kodu przykladowo:

  1. SELECT id AS id_a, nazwa AS nazwa_a FROM wykonawcy WHERE nazwa LIKE 'A%' LIMIT 1
  2. UNION ALL
  3. SELECT id AS id_b, nazwa AS nazwa_b FROM wykonawcy WHERE nazwa LIKE 'B%' LIMIT 1


czy jest na to jakis sposob? czy musze rozdzielic jedna tabele na wiele tabel czyli np. wykonawcy_a, wykonawcy_b .... itd.?

EDIT: Udalo sie winksmiley.jpg Musialem otworzyc oczy i poczytac manual'a. Okazalo sie ze zrobilem szkolny blad czyli nie zastosowalem nawiasow w zapytaniach. Ponizej prawidlowe zapytanie ktore zwraca ladnie tablice:

  1. (SELECT id, nazwa FROM wykonawcy WHERE nazwa LIKE 'A%' LIMIT 1 )
  2. UNION ALL
  3. (SELECT id, nazwa FROM wykonawcy WHERE nazwa LIKE 'B%' LIMIT 1 )
phpion
Rozumiem, że chcesz wyświetlić po 1 wykonawcy na każdą literkę. Jeżeli tak to spróbuj w ten sposób:
  1. SELECT id, nazwa, LEFT(nazwa, 1) AS literka FROM wykonawcy GROUP BY LEFT(nazwa, 1) ORDER BY nazwa ASC
mario
@phpion: rewelacja winksmiley.jpg Nie wiedzialem ze mozna to zrobic w jednym prostym zapytaniu.... musze poswiecic czas na czytanie manual'a. Dziekuje o to chodzilo, jest to czesc zapytania ktore pisze wiec pomogles mi w 100%, reszte juz sobie dopisze. Jeszcze raz wielkie dzieki!
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.