Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Łączenie tabel
HakuQ
post 8.07.2016, 09:29:13
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 27.06.2016

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


  1. echo "<table border=1>";
  2. $query = $con->query("SELECT Imie, Nazwisko, Numery FROM Osoba1, Numery");
  3. while($rec = $query->fetch_assoc()) {
  4. echo "<tr><td>{$rec['Imie']}</td><td>{$rec['Nazwisko']}</td></tr>";
  5. }
  6.  
  7. echo "</table>";


Ja mogę połączyć wyniki w jednej tabeli? W ten sposób właśnie wyświetla mi wyniki 4 razy.

Ten post edytował HakuQ 8.07.2016, 09:29:52
Go to the top of the page
+Quote Post
Lion
post 8.07.2016, 11:03:53
Post #2





Grupa: Zarejestrowani
Postów: 148
Pomógł: 14
Dołączył: 23.02.2013

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


Podajesz za mało informacji o budowie tabel Osoba1 i Numery. Nie wiadomo jak się łączą o ile w ogóle.


--------------------
Go to the top of the page
+Quote Post
HakuQ
post 8.07.2016, 11:24:10
Post #3





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 27.06.2016

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


Cytat(Lion @ 8.07.2016, 12:03:53 ) *
Podajesz za mało informacji o budowie tabel Osoba1 i Numery. Nie wiadomo jak się łączą o ile w ogóle.


łączą się tylko, że się dublują

zamiast pętli while zrobiłem tak
  1. for($i=1; $i <= 4; $i++) {
  2. $rec=$query->fetch_assoc();
  3. echo "<tr>
  4. <td>{$rec['Imie']}</td>
  5. <td>{$rec['Nazwisko']}</td>
  6. <td>{$rec['Numery']}</td>
  7. </tr>";
  8. }


Tylko teraz wyświetla z każdym wynikiem Imie i Nazwisko tylko pierwszy numer telefonu. Jak zmienię miejscami Osoba1 i Numery
  1. "SELECT Imie, Nazwisko, Numery FROM Numery, Osoba1"

to wyświetla mi wszystkie numery ale dla 1 wyniku Imie i Nazwisko czyli mam 4 razy Jan Kowalski i 4 różne numery :/
Go to the top of the page
+Quote Post
nospor
post 8.07.2016, 11:27:49
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




@HakuQ robiac zapytanie na dwoch tabelach MUSISZ ZAWSZE powiedziec bazie po czym laczysz te tabele. Jesli tego nie zrobisz (czyli tak jak masz teraz) to zapytanie zwroci ci iloczyn kartezjanski czyli kazdy rekord z tabeli1 z kazdym rekordem z tabeli2. Czyli jesli jedna tabela ma 2 rekordy a druga ma 3 to w rezultacie dostaniesz 2x3=6 rekordow.

Poczytaj w manualu o JOIN oraz nieodzwonym ON przy JOIN.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
HakuQ
post 8.07.2016, 12:17:37
Post #5





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 27.06.2016

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


@nospor

Zrobiłem tak:
  1. "SELECT Osoba1.Imie, Osoba1.Nazwisko, Numery.Numery FROM Osoba1 JOIN Numery ON Osoba1.Imie = Numery.ID"


Nic się nie wyświetla i nie pokazuje żadnych błędów
Go to the top of the page
+Quote Post
nospor
post 8.07.2016, 12:18:39
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Osoba1.Imie = Numery.ID
A od kiedy Imie to ID w Numery? Naprawde pod kolumna ID w Numery masz IMIE??


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

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: 18.08.2025 - 14:37