Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MySQL] Wyciągnięcie danych z tabeli, Jeżeli odpowiednie dane znajdują się w innej.
harbii
post
Post #1





Grupa: Zarejestrowani
Postów: 311
Pomógł: 1
Dołączył: 27.05.2006

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


Chodzi o to:
Wyciągamy dane z tabeli

  1. SELECT * FROM ar WHERE nar='$narid' and naaaa='1' or kolga.id='$narid' ORDER BY `poz` ASC


Wiem, że to źle więc proszę o poprawkę.

Ma być tak, że wyciąga z tabeli ar jeżeli nar='$narid' i naaaa='1' to wiadomo smile.gif oraz jeżeli nar=id z tabeli kolga.
Go to the top of the page
+Quote Post
john_doe
post
Post #2





Grupa: Zarejestrowani
Postów: 873
Pomógł: 25
Dołączył: 24.07.2005

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


nie wiem czy dobrze rozumiem ale po:

1sze - dołącz tą drugą tabelkę do zapytania, zapodaj warunki łączące i daj warunek jaki podałeś

2gie - poczytaj o "if exists" w mySql
Go to the top of the page
+Quote Post
harbii
post
Post #3





Grupa: Zarejestrowani
Postów: 311
Pomógł: 1
Dołączył: 27.05.2006

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


no właśnie tylko jak podłączyć tą drugą tabelką?
Go to the top of the page
+Quote Post
GreenGo
post
Post #4





Grupa: Zarejestrowani
Postów: 265
Pomógł: 4
Dołączył: 30.08.2004

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


np. za pomocą LEFT JOIN
Go to the top of the page
+Quote Post
harbii
post
Post #5





Grupa: Zarejestrowani
Postów: 311
Pomógł: 1
Dołączył: 27.05.2006

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


nie czaje tego left join w tym wypadku

  1. SELECT * FROM ar WHERE nar='$narid' and naaaa='1' or LEFT JOIN kolga.id='$narid' ORDER BY `poz` ASC
?

w skrócie chodzi o to aby odczytał z tabeli ar wszystko gdy nar=$narid oraz wtedy gdy nar=id z tabeli kolga

help!

Ten post edytował harbii 19.11.2010, 01:23:06
Go to the top of the page
+Quote Post
GreenGo
post
Post #6





Grupa: Zarejestrowani
Postów: 265
Pomógł: 4
Dołączył: 30.08.2004

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


Jeśli nar to jest to samo co kolega.id to może to tak wyglądać:

  1. SELECT pola które chcesz wyswietlic FROM ar INNER JOIN kolega ON ar.nar = kolega.id WHERE ar.naaa = 1


LEFT JOIN też można zastosować w zależności jakie pola chcesz wyświetlić.


Mam nadzieje, że nie palnąłem jakiejś głupoty tongue.gif
Go to the top of the page
+Quote Post
harbii
post
Post #7





Grupa: Zarejestrowani
Postów: 311
Pomógł: 1
Dołączył: 27.05.2006

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


jak dałem left join zamiast inner to prawie jest ok

prawie bo wyświetlam mi zamiast odpowiednich nazw to nr id z kolga a jak nie ma odpowiedniego rekordu to robi pustą linijkę (br)

dałem tak
  1. SELECT * FROM ar LEFT JOIN kolga ON ar.ngr=kolga.ngr WHERE ar.ngr='$ngrid' and naaaa'1' ORDER BY `poz` ASC


ale ilość pustych linijek odpowiada ilości rekordów z tabeli at smile.gif

Ten post edytował harbii 19.11.2010, 01:56:53
Go to the top of the page
+Quote Post
GreenGo
post
Post #8





Grupa: Zarejestrowani
Postów: 265
Pomógł: 4
Dołączył: 30.08.2004

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


Bo "LEFT JOIN" polega własnie na tym, że wyciąga wszyskie pola z tabeli po lewej (ar) i tylko pole powiązane z tabeli po prawej (kolega). Zasotsuj INNER JOIN.
Go to the top of the page
+Quote Post
harbii
post
Post #9





Grupa: Zarejestrowani
Postów: 311
Pomógł: 1
Dołączył: 27.05.2006

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


hmm też nie tak, chyba nie do końca się zrozumieliśmy.

Po walce stwierdziłem, że rozwiążę ten temat inaczej (dodałem sobie dwa rekordy do tabeli ar i warunki , które kontrolują co i gdzie ma się pokazywać - bo chyba JOINem bym tego nie zrobił.

Ale wielkie dzięki za pokazanie jak działa JOIN bo jakoś tego nie mogłem wcześniej zczaić.
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 Aktualny czas: 19.08.2025 - 17:10