Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Łączona baza danych 3 tabele
Forum PHP.pl > Forum > Przedszkole
aska12
Witam ma mały problem chcę z 3 tabel w bazie wypisać nazwy po ich id

  1. SELECT problemy.nazwa, problemy.user_id, kategorie.nazwa_k, problemy.tresc, problemy.DATA, user.user, user.id, problemy.id_kat FROM problemy, user, kategorie WHERE problemy.user_id = user.id & problemy.id_kat = kategorie.nazwa_k

tabela
user

id
haslo
login

problemy
id
nazwa
user_id
tresc
id_kat
data

kategorie
id
nazwa_k

co chcę wyświetlić
nazwa pobrana z problemy
user pobrany z user
tresc pobrane z problemy
nazwa_k pobrane z kategorie
data pobrane z problemy

bo teraz baza danych wywołuje mi się 6 razy a powinna tylko 2
robertpiaty
Użyj left joinów i określ po jakich kolumnach łączą się tabele lub zamiast jednego & użyj && Ja rzadko kiedy łącze tak ze sobą tabelę - przeważnie używam joinów.

-----
Właśnie zauważyłem że masz błąd w where
  1. problemy.id_kat = kategorie.nazwa_k

powinno być
  1. problemy.id_kat = kategorie.id
sazian
i nie & tylko AND
robertpiaty
w MySQL można stosować i && i AND http://dev.mysql.com/doc/refman/5.0/en/log...ml#operator_and Tak samo jak znak nierówności. Jak uczyłem się SQL to zawsze wbijano mi do głowy znak <> a MySQL przyjmie też !=
com
@up tak tylko ze && a nie &, tyle ze to jest nie eleganckie, a dodano bo mysql musialbyc i.. odporny, a druga kwestia to wszelakie ide chyba tego nie znaja choc nie dam glowy bo nie sprawdzalem smile.gif

A tak swoja droga to uzywany tu jest join tylko ten napis zastepowny jest ,
Bo znow programisci byli zbyt leniwi biggrin.gif
fosjoas2015
"Tabela 'nieprzeczytane':
- userID
- msgID albo topicID (co niesie za sobą pewne wady, ale też uproszczenia)

Przy odświeżaniu strony przez użytkownika, sprawdzamy datę jego ost. odświeżenia strony i pobieramy z tabeli postów ID tych wiadomości, które mają datę > niż data użytkownika. Uzupełniamy tabelę tymi wpisami. Aby zapobiec przepełnieniu, możemy przy dodawaniu rekordów do tabeli sprawdzić jeszcze, czy np.
robertpiaty
Cytat(com @ 9.03.2015, 23:43:41 ) *
[...]
A tak swoja droga to uzywany tu jest join tylko ten napis zastepowny jest ,
Bo znow programisci byli zbyt leniwi biggrin.gif


Tak masz rację to też jest join, chociaż tak nie do końca. Pamiętam że kiedyś miałem z tym problem. Nie pamiętam dokładnie z czym, ale chyba chodziło o coś w tym stylu
  1. SELECT * FROM a,b,c LEFT JOIN d ON(d.id = b.d_id) WHERE {tutaj wszystkie warunki złączeń} AND d.id IS NULL


I chyba właśnie w tym przypadku w klauzuli on przy left join krzyczał że nie zna b.d_id. Tak jak pisałem nie pamiętam dokładnie o co chodziło ale chyba o to.
com
robertpiaty owszem zgadam się z Toba w zupełności, nie każdego joina da się , zastąpić. Dlatego też powstało mimo wszystko tyle ich rodzai, ale czasem się da, niestety złączenia trzeba zrozumieć żeby nie było problemów. Tu nawet to zostało obrazowo pokazane http://www.sitepoint.com/understanding-sql...mysql-database/. Oczywiście to do autora tematu kieruje smile.gif
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.