![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 195 Pomógł: 0 Dołączył: 13.04.2004 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Witam!
W mojej bazie danych przechowuję informacje w następującej tabeli: Kod +----+-------+---------+---------+ Gdzie id to jest id wpisu, owner to obiekt, do którego należy dany parametr - par_name nazwa parametru, par_value - jego wartość.| id | owner |par_name |par_value| +----+-------+---------+---------+ Chciałbym teraz przeprowadzić wyszukanie obiektu po wielu różnych parametrach i nie wiem jak ugryźć zapytanie sql. Powiedzmy taki przypadek: Znajdź id obiektu (pole owner), którego parametr "nazwa" jest podoba (sql LIKE) do "%Wpisana nazwa%", którego parametr "kategoria" jest równe X, oraz którego parametr "Ocena" znajduje się w sumie zbiorów <1, 2>U<4, 6> (możliwe ułamki) Jak się zabrać do czegoś takiego? Nie mam najmniejszego pomysłu, dlatego każdą radę, która mnie naprowadzi na cel przyjmę z wielką wdzięcznością ![]() -------------------- Językiem którym najlepiej operują wszyscy programiści są przekleństwa.
|
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 135 Pomógł: 0 Dołączył: 15.04.2004 Skąd: w-wa Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 195 Pomógł: 0 Dołączył: 13.04.2004 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Gdyby było takie proste, sam bym na to wpadł
![]() Niestety, nie o to mi chodzi. Posłużę się może przykładem tabeli: Kod +====+=======+=========+==========+ | ID | OWNER |PAR_NAME |PAR_VALUE | +====+=======+=========+==========+ | 1. | 1 | nazwa | Pomidor | | 2. | 2 | nazwa |Pomarańcza| | 3. | 3 | nazwa |Marchewka | ----------------------------------- | 4. | 1 |kategoria| 1 | | 5. | 2 |kategoria| 2 | | 6. | 3 |kategoria| 1 | ----------------------------------- | 7. | 1 | ocena | 1.3 | | 8. | 2 | ocena | 4.2 | | 9. | 3 | ocena | 4.5 | I teraz chcę pobrać z tego obiekt którego, powiedzmy, nazwa zaczyna się na "pom", należy do kategorii 1 i ma ocenę mniejszą niż 2 lub ocenę większą niż 4 (dla tego przykładu, będzie to obiekt 1) Ten post edytował L_Devil 6.03.2006, 15:18:59 -------------------- Językiem którym najlepiej operują wszyscy programiści są przekleństwa.
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarząd Postów: 2 277 Pomógł: 6 Dołączył: 27.12.2002 Skąd: Wołów/Wrocław ![]() |
Kod SELECT DISTINCT owner FROM tabela t1
INNER JOIN tabela t2 ON ( t2.owner = t1.owner and t2.PAR_NAME = 'nazwa' and t2.PAR_VALUE LIKE 'pom%' ) INNER JOIN tabela t3 ON ( t3.owner = t1.owner and t3.PAR_NAME = 'ocena' and ( t3.PAR_VALUE < 2 OR t3.PAR_VALUE > 4 ) ) WHERE t1.PAR_NAME = 'kategoria' and t1.PAR_VALUE = 1 -------------------- "Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 195 Pomógł: 0 Dołączył: 13.04.2004 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
MySQL zwrócił komunikat:
Kod #1052 - Column: 'owner' in field list is ambiguous ==edit== Poprawiłem owner na t1.owner na samym początku zapytania - teraz śmiga idealnie ![]() Wielkie dzięki! Ten post edytował L_Devil 6.03.2006, 15:40:34 -------------------- Językiem którym najlepiej operują wszyscy programiści są przekleństwa.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 08:09 |