Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pytanie o skladnie SELECT "zbiorczy"
Forum PHP.pl > Forum > Bazy danych > PostgreSQL
martin1978
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
Ilware
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ć
martin1978
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.



Ilware
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
phpion
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.
Łukasz O.
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
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-2024 Invision Power Services, Inc.