• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Wyszukiwanie za pomocą par atrybutów SQL

Object Storage Arubacloud
0 głosów
309 wizyt
pytanie zadane 11 sierpnia 2019 w SQL, bazy danych przez niezalogowany

hej, mam pewien mały problem, otóż mam stworzoną tabelę atrybutów, która wygląda tak

ID | OFFER | ATTRIBUTE | VALUE

Teraz chciałbym znaleźć wiersze spełniające kilka warunków związanych z polami attribute oraz value.

Nie wiem jak się za to zabrać, ponieważ musiałbym to sobie jakoś pogrupować w pary z uwagi na fakt, że atrybut nr 1 może mieć wartości 1 i 2 z kolei atrybut nr 2 może mieć już wartości 1, 2, 3 i 4.

Stworzyłem takie proste zapytanie:

select o.id
from offers o,
     attributes oa
where o.type = 1
  and o.id = oa.offer
  and o.location = 1
  and oa.property = 1
  and oa.value = 1
  and oa.property = 3
  and oa.value = 3
  and oa.property = 4
  and oa.value = 5
  and oa.property = 6
  and oa.value = 1
order by added desc;

Jednakże no jak można się domyślić, nie działa.

Działa jedynie dla jednego zestawu atrybut > wartość, czyli:

select o.id
from offers o,
     attributes oa
where o.type = 1
  and o.id = oa.offer
  and o.location = 1
  and oa.property = 1
  and oa.value = 1
order by added desc;

Jakieś porady?

2 odpowiedzi

0 głosów
odpowiedź 11 sierpnia 2019 przez niezalogowany

 

Wymyśliłem takie o to rozwiązanie ale nie wiem na ile jest ono poprawne i optymalne, prosiłbym o doradztwo.

select distinct  o.id
from offers o,
     attributes oa1,
     attributes oa2,
     attributes oa3
where o.type = 1
  and o.id = oa1.offer and oa1.offer = oa2.offer and oa2.offer = oa3.offer
  and o.location = 1
  and (oa1.property = 1 AND oa1.value = 1)
  and (oa2.property = 3 AND oa2.value = 3)
  and (oa3.property = 4 AND oa3.value = 5)
order by added desc;

 

–1 głos
odpowiedź 11 sierpnia 2019 przez Wraith Gaduła (4,370 p.)
SELECT id
from attributes
where property = 1 AND value = 1 
OR (property = 3 AND value = 3)
OR (property = 4 AND value = 5)

 

komentarz 11 sierpnia 2019 przez niezalogowany
No nie, bo wtedy wystarczy że jedna para będzie się zgadzała, a mi chodzi o to aby wszystkei z podanych par property > value się zgadzały

Podobne pytania

0 głosów
1 odpowiedź 80 wizyt
0 głosów
0 odpowiedzi 155 wizyt
pytanie zadane 15 lutego 2017 w HTML i CSS przez Kazuhiro Użytkownik (910 p.)
0 głosów
1 odpowiedź 339 wizyt
pytanie zadane 4 stycznia 2016 w JavaScript przez Majkel Nowicjusz (210 p.)

92,570 zapytań

141,422 odpowiedzi

319,643 komentarzy

61,958 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...