Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> nietypowy select
maciu
post 16.10.2007, 15:01:12
Post #1





Grupa: Zarejestrowani
Postów: 238
Pomógł: 1
Dołączył: 27.08.2003

Ostrzeżenie: (0%)
-----


tabela

id id_akcja
1 1
2 1
3 2
4 3
5 1
6 4

i teraz chcę wyciągnąć 2 rekordy, gdzie id_akcja=1, i 3 dowolne inne rekordy (ale różne od tych wybranych w pierwszym kroku). Czy da się to wykonać w jednym zapytaniu?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
Cezar708
post 16.10.2007, 15:06:46
Post #2





Grupa: Zarejestrowani
Postów: 1 116
Pomógł: 119
Dołączył: 10.05.2005
Skąd: Poznań

Ostrzeżenie: (0%)
-----


nie mam pojęcia czy o to Ci chodzi...
  1. SELECT * FROM tabela WHERE id_akcja=1
  2. UNION
  3. SELECT * FROM tabela WHERE id_akcja<>1 LIMIT 3
Go to the top of the page
+Quote Post
maciu
post 16.10.2007, 15:41:06
Post #3





Grupa: Zarejestrowani
Postów: 238
Pomógł: 1
Dołączył: 27.08.2003

Ostrzeżenie: (0%)
-----


prawie o to mi chodzi, ale dziękuje, że mnie naprowadziłes

  1. (SELECT * FROM tabela WHERE id_akcja=1 LIMIT 2 )
  2. UNION
  3. (SELECT * FROM tabela) ORDER BY id DESC LIMIT 5


wynik jest taki jaki oczekiwałem, tylko chciałbym jeszcze, aby rekordy były posortowane w taki sposób, aby rekordy zwrócone przez pierwszy select były na szczycie wyników
Go to the top of the page
+Quote Post
Cezar708
post 16.10.2007, 15:48:40
Post #4





Grupa: Zarejestrowani
Postów: 1 116
Pomógł: 119
Dołączył: 10.05.2005
Skąd: Poznań

Ostrzeżenie: (0%)
-----


klauzura ALL
  1. (SELECT * FROM tabela WHERE id_akcja=1 LIMIT 2 )
  2. UNION ALL
  3. (SELECT * FROM tabela ORDER BY id DESC LIMIT 5 )
Go to the top of the page
+Quote Post
maciu
post 16.10.2007, 15:58:13
Post #5





Grupa: Zarejestrowani
Postów: 238
Pomógł: 1
Dołączył: 27.08.2003

Ostrzeżenie: (0%)
-----


klauzula ALL służy do zwrócenia zduplikowanych rekordów, a ja chciałem, żeby rekordy z selecta pierwszego były na szczycie wyników.
Już sobie z tym poradziłem, wstawiam kod, może się komuś przyda

  1. (SELECT *, 1 AS order_by FROM tabela WHERE id_akcja=1 LIMIT 2 )
  2. UNION
  3. (SELECT *, 0 AS order_by FROM tabela ORDER BY id DESC LIMIT 5 ) ORDER BY order_by DESC
Go to the top of the page
+Quote Post
Cezar708
post 16.10.2007, 16:00:15
Post #6





Grupa: Zarejestrowani
Postów: 1 116
Pomógł: 119
Dołączył: 10.05.2005
Skąd: Poznań

Ostrzeżenie: (0%)
-----


fakt, właśnie doczytałem i chciałem Cię poinformować... trochę się pospieszyłem z odpowiedzią

BTW. Sprytny sposób, gratuluję pomysłowości winksmiley.jpg
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 13.08.2025 - 23:07