Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem z join left
buliq
post 4.03.2008, 16:18:16
Post #1





Grupa: Zarejestrowani
Postów: 559
Pomógł: 93
Dołączył: 4.03.2008
Skąd: Olsztyn

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


Mam zapytanie pobierające dane z tabeli konta_majatek i sklep. Chodzi mi o to żeby np. jak użytkownik o nazwie lol kupi sprzet1 ze sklepu to juz nie bedzie wyswietlany w sklepie.
Struktura konta_majatek:
id, nazwa(nazwa z tabeli sklep), cena(cena z tabeli sklep), idsklep(id z tabeli sklep), login,
Struktura sklep:
id, nazwa, cena,

Mam teraz taki kod:
  1. SELECT *
  2. FROM sklep s
  3. LEFT JOIN konta_majatek km ON s.id != km.idsklep
  4. WHERE km.login = 'lol' AND s.id != km.idsklep


Pomocy próbowałem już wszystkiego


--------------------
KTOŚ TU PACZY???

Kompedium wiedzy
Go to the top of the page
+Quote Post
Jarod
post 4.03.2008, 16:53:40
Post #2





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

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


Próbowałeś zamiast LEFT JOIN z INNER JOIN ?


--------------------
”Godzina nauki w życiu nowoczesnego apostoła jest godziną modlitwy.”
(św. Josemaría Escrivá, Droga, 335)
Go to the top of the page
+Quote Post
buliq
post 4.03.2008, 19:46:59
Post #3





Grupa: Zarejestrowani
Postów: 559
Pomógł: 93
Dołączył: 4.03.2008
Skąd: Olsztyn

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


Niestety ale nie pomogło. Dalej to samo :/

Zapomniałem dodać że rekordy się podwajają lub potrajają czyli wyświetlają się kilka razy


--------------------
KTOŚ TU PACZY???

Kompedium wiedzy
Go to the top of the page
+Quote Post
Jarod
post 4.03.2008, 21:54:42
Post #4





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

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


  1. SELECT * FROM sklep LEFT JOIN km ON sklep.id = km.sklep_id WHERE login IS NULL;


Utworzyłem sobie takie tabele jak podałeś, trochę inne nazwy i sprawdziłem. Jeśli dobrze zrozumiałem o co chodzi to powyższe zapytanie działa. Tylko jak możesz to wytłumacz dokładnie co chcesz osiągnąć? Bo dla mnie struktura tych tabeli jest bez sensu. Poczytaj o normalizacji bazy danych.


--------------------
”Godzina nauki w życiu nowoczesnego apostoła jest godziną modlitwy.”
(św. Josemaría Escrivá, Droga, 335)
Go to the top of the page
+Quote Post
buliq
post 5.03.2008, 15:39:25
Post #5





Grupa: Zarejestrowani
Postów: 559
Pomógł: 93
Dołączył: 4.03.2008
Skąd: Olsztyn

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


No więc zrobiłem coś takiego:
  1. SELECT *
  2. FROM `sklepy` WHERE id NOT
  3. IN (
  4. SELECT idsklep
  5. FROM `konta_majatek` WHERE login = 'lol'
  6. )


I działa. Opłacało się pomyśleć. Jednak dziękuję ci Jarod i dam ci plusika.


--------------------
KTOŚ TU PACZY???

Kompedium wiedzy
Go to the top of the page
+Quote Post
Jarod
post 5.03.2008, 15:42:00
Post #6





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

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


@buliq: podzapytania są wolniejsze. To, które Ci podałem też działa.


--------------------
”Godzina nauki w życiu nowoczesnego apostoła jest godziną modlitwy.”
(św. Josemaría Escrivá, Droga, 335)
Go to the top of the page
+Quote Post
kubel-junior
post 22.03.2008, 09:32:33
Post #7





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 29.01.2008

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


jak robisz left joina to przy warunku "on" pole z dodawanej tabeli musi być po lewej stronie równania.
Poza tym bez sensu dołączać kilka pól z innej tabeli, 1 zasada normalizacji.
czyli jak masz
select m.cos, s.cos_wiecej
from magazyn m
left join sklep on s.id=m.cos_wiecej_id
itd..
Pozdro
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: 21.05.2024 - 23:50