Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [SQL] problem z zapytaniem łączonym (3 tabele)
kowalcook
post 10.09.2008, 16:55:40
Post #1





Grupa: Zarejestrowani
Postów: 61
Pomógł: 0
Dołączył: 17.11.2005

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


Witam

mam taki oto kod

  1. $zapyt1 = mysql_query("SELECT .....kolumny.z.bazy..... FROM baza_pierwsz, baza_druga, baza_trzecia WHERE baza_pierwsza.jakas_kolumna!='0' AND baza_druga.jakas_kolumna>='$zmienna' AND baza_pierwsza.jakas_kolumna=baza_druga.jakas_kolumna AND baza_pierwsza.jakas_kolumna!=baza_trzecia.jakas_kolumna AND baza_trzecia.jakas_kolumna='$zmienna2' ORDER BY baza_pierwsza.jakas_kolumna DESC LIMIT $zmienna3,30");



samo zapytanie wyczytuje to co trzeba z małym wszakże wyjątkiem, a mianowicie:


każdy rekord wywoływany jest potrójnie (jest dublowany, a w zasadzie trójblowany smile.gif ),

są wyjątki że (ew podwójnie gdyż jedno z trzech zdublowanych (z trójblowanych smile.gif rekordów) prawidłowo odczytuje warunki a drugi i trzeci dubel już jakby je ignorował)



dlaczego on dubluje zapytania i dlaczego jeden z tych trzech dubli rozpoznaje warunki prawidłowo i je filtruje odpowiednio a drugi i trzeci ("dubel") już nie ?

Ten post edytował kowalcook 10.09.2008, 16:57:25
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
JoShiMa
post 11.09.2008, 08:55:05
Post #2





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

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


Albo

  1. SELECT DISTINCT .....kolumny.z.bazy..... FROM baza_pierwsz, baza_druga, baza_trzecia


albo

  1. SELECT .....kolumny.z.bazy.....
  2. FROM baza_pierwsz LEFT OUTER JOIN baza_druga ON ...
  3. LEFT OUTER JOIN ON baza_trzecia


--------------------
Go to the top of the page
+Quote Post
kowalcook
post 11.09.2008, 15:54:11
Post #3





Grupa: Zarejestrowani
Postów: 61
Pomógł: 0
Dołączył: 17.11.2005

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


Witaj



niestety DISTINCT odpada, brałem go już wcześniej pod uwagę ale on wtedy wyświetla wszystkie rekordy nawet te których warunki nie obejmują przy pierwszej pętli gdyż jako że ich nie ma to je pokazuje z drugiej pętli, w której już te warunki w zapuyaniu nie działają poprawnie




drugi sposób też nie pomaga


odkryłem jednakże że ilość zapętleń x2, x3, x4 itd uzależniona jest od ilosci rekordów z znajdujących się w bazie_trzeciej


wtedy miałem ich trzy dlatego "trójdoblowało" smile.gif mi ale bynajmniej widzę już jakąś zależność co ni jak nie pozwala mi wykryć gdzie leży problem smile.gif


może te wskazówki pomogą wam pomóc mi w tym problemie smile.gif



pozdro kowalcook

Ten post edytował kowalcook 11.09.2008, 15:56:28
Go to the top of the page
+Quote Post
JoShiMa
post 11.09.2008, 16:22:17
Post #4





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

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


Cytat(kowalcook @ 11.09.2008, 16:54:11 ) *
odkryłem jednakże że ilość zapętleń x2, x3, x4 itd uzależniona jest od ilosci rekordów z znajdujących się w bazie_trzeciej

To normalne i jak się robi JOIN to trzeba odpowiednio ustawić warunek ON żeby tego uniknąć.


--------------------
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: 24.07.2025 - 21:50