Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][SQL] Kilka parametrów w jednej tabeli
Forum PHP.pl > Forum > PHP
lorenzo
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?
mmmmmmm
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.
lorenzo
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.
mmmmmmm
  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)
lorenzo
Dzięki wielkie.
Obyło się bez modyfikacji tabel
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-2025 Invision Power Services, Inc.