Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][SQL] Kilka parametrów w jednej tabeli
lorenzo
post 28.12.2012, 15:16:39
Post #1





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 12.05.2011

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


Witam,

męczę się z wydobywaniem danych z bazy. Od razu przejdę do rzeczy.
Mam kilka tabel, które są połączone relacjami. W tym dwie tabele połączone w taki sposób (w skrócie):

tabele:

badanie
---------------
parametr_a
parametr_b
parametr_c


parametry
------------
id
nazwa

badanie może mieć kilka parametrów (oczywiście z tabeli parametry). Relacje utworzone są następująco:
badanie.parametr_a -> parametry.id
badanie.parametr_b -> parametry.id
badanie.parametr_c -> parametry.id

moje pytanie w SQL wygląda następująco:
  1. SELECT * FROM badanie, parametry
  2. WHERE
  3. badanie.parametr_a=parametry.id OR badanie.parametr_b=parametry.id OR badanie.parametr_c=parametry.id
  4. AND
  5. (
  6. (badanie.parametr_a = 'pierwszy_parametr' OR badanie.parametr_b = 'pierwszy_parametr' OR badanie.parametr_c = 'pierwszy_parametr') AND (badanie.parametr_a = 'drugi_parametr' OR badanie.parametr_b = 'drugi_parametr' OR badanie.parametr_c = 'drugi_parametr')
  7. )


tu próbowałem dawać AND ale wyświetlana jest informacja, że zero wyników
  1. badanie.parametr_a=parametry.id OR badanie.parametr_b=parametry.id OR badanie.parametr_c=parametry.id



Pytanie działa, jednak nie zawsze wyświetla poprawne wyniki przy kilku parametrach.
Pytanie z mojej strony czy to są złe relacje czy złe zapytanie?

Ten post edytował lorenzo 28.12.2012, 15:18:04
Go to the top of the page
+Quote Post
mmmmmmm
post 28.12.2012, 17:45:24
Post #2





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

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


Zła struktura tabel do tego zapytania.
Złe zapytanie do tej struktury tabel. Do takich tabel musisz trzy razy doczepić tabęlę parametry. Raa do parametr_a, raz do parametr_b, raz do parametr_c. I to LEFT JOINami.
Go to the top of the page
+Quote Post
lorenzo
post 28.12.2012, 23:30:37
Post #3





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 12.05.2011

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


próbowałem w taki sposób:
  1. SELECT * FROM badanie LEFT JOIN parametry ON (badanie.parametr_a=parametry.id) LEFT JOIN parametry ON (badanie.parametr_b=parametry.id) LEFT JOIN parametry ON (badanie.parametr_c=parametry.id)

phpMyAdmin krzyczy że:
#1066 - Not unique table/alias: 'parametry'

Tabele mam przebudować, czy można użyć innego pytania?
Jeśli potrzeba zmienić coś w tabelach to poratujcie.
Go to the top of the page
+Quote Post
mmmmmmm
post 29.12.2012, 00:04:04
Post #4





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

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


  1. SELECT * FROM badanie LEFT JOIN parametry AS p1 ON (badanie.parametr_a=p1.id) LEFT JOIN parametry AS p2 ON (badanie.parametr_b=p2.id) LEFT JOIN parametry AS p3 ON (badanie.parametr_c=p3.id)
Go to the top of the page
+Quote Post
lorenzo
post 29.12.2012, 02:04:39
Post #5





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 12.05.2011

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


Dzięki wielkie.
Obyło się bez modyfikacji tabel
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: 12.06.2025 - 11:30