Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Pytanie o skladnie SELECT "zbiorczy"
martin1978
post
Post #1





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 23.03.2011

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


Witam

Czy jest możliwość zastąpienia ponizszych SELECTOW :
  1. SELECT * FROM tabela WHERE parametr = 'wartosc1' ORDER BY time DESC LIMIT 100
  2. SELECT * FROM tabela WHERE parametr = 'wartosc2' ORDER BY time DESC LIMIT 100
  3. SELECT * FROM tabela WHERE parametr = 'wartosc3' ORDER BY time DESC LIMIT 100
  4. SELECT * FROM tabela WHERE parametr = 'wartosc4' ORDER BY time DESC LIMIT 100
  5. SELECT * FROM tabela WHERE parametr = 'wartosc5' ORDER BY time DESC LIMIT 100
  6. SELECT * FROM tabela WHERE parametr = 'wartosc6' ORDER BY time DESC LIMIT 100


jednym SELECT-em?

Z góry dzięki za podpowiedzi

Ten post edytował martin1978 29.06.2011, 17:03:27
Go to the top of the page
+Quote Post
Ilware
post
Post #2





Grupa: Zarejestrowani
Postów: 248
Pomógł: 31
Dołączył: 14.12.2010
Skąd: Wrocław

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


to zależy co chcesz uzyskać, możesz zrobić

  1. SELECT * FROM tabela WHERE parametr = 'wartosc1' OR parametr = 'wartosc2' OR parametr = 'wartosc3' OR parametr = 'wartosc4' OR parametr = 'wartosc5' OR parametr = 'wartosc6' ORDER BY time DESC LIMIT 100


jeżeli to jest jakiś przedział te wartości to :

  1. SELECT * FROM tabela WHERE parametr BETWEEN 'wartosc1' AND 'wartosc6' ORDER BY time DESC LIMIT 100


opisz dokładniej co chcesz uzyskać


--------------------
Jeżeli pomogłem kliknij "Pomógł" :)
Go to the top of the page
+Quote Post
martin1978
post
Post #3





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 23.03.2011

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


Chcę uzyskać właśnie to, żeby
a/ jednym selectem
b/ z jednej tabeli
c/ wybrać z jednej kolumny podkreślam z jednej kolumny, która nazywa się parametr
d/ wybrać 13 nazw parametrów.
e/ a później to już sobie poradzę z pobraniem wartości z tych nazw parametrów

I zamiast pisania 13 selectow napisać to jednym selectem.



Go to the top of the page
+Quote Post
Ilware
post
Post #4





Grupa: Zarejestrowani
Postów: 248
Pomógł: 31
Dołączył: 14.12.2010
Skąd: Wrocław

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


Cytat(Ilware @ 29.06.2011, 23:23:57 ) *
  1. SELECT * FROM tabela WHERE parametr = 'wartosc1' OR parametr = 'wartosc2' OR parametr = 'wartosc3' OR parametr = 'wartosc4' OR parametr = 'wartosc5' OR parametr = 'wartosc6' ORDER BY time DESC LIMIT 100


to to właśnie to robi, pobiera różne wartości z jednej tabeli


--------------------
Jeżeli pomogłem kliknij "Pomógł" :)
Go to the top of the page
+Quote Post
phpion
post
Post #5





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Cytat(Ilware @ 30.06.2011, 12:05:01 ) *
to to właśnie to robi, pobiera różne wartości z jednej tabeli

Nie do końca. Pobiera ono 100 rekordów gdzie parametr ma wartosc_1 lub wartosc_2 itd. W wyniku zawsze otrzymasz maksymalnie 100 rekordów, a w przykładzie podanym przez martin1978 może być ich 600.

@martin1978:
Jeśli chcesz pobrać po N rekordów dla każdego typu (wartości parametru) musisz skorzystać z UNION.
Go to the top of the page
+Quote Post
Łukasz O.
post
Post #6





Grupa: Zarejestrowani
Postów: 191
Pomógł: 5
Dołączył: 13.01.2007

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


oj proszę Cię - nic nie musi:
  1. SELECT * FROM (
  2. SELECT *, row_number() over(partition BY parametr ORDER BY time DESC) AS pos
  3. FROM tabela
  4. WHERE parametr IN('wartosc1','wartosc2')
  5. )
  6. WHERE pos <= 100


archeolog ze mnie ;p

Ten post edytował Łukasz O. 22.08.2011, 21:38:13


--------------------
"Don't tell me you want a bridge - show me the canyon you want to cross" Giuseppe Delena
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 Aktualny czas: 19.08.2025 - 18:00