Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]PObieranie danych z wielu tabel
Forum PHP.pl > Forum > Przedszkole
jaca121212
Tak jak w temacie mam kod który powinien zwracać wyniki z 4 różnych tabel ale nie działa brak komunikatu o błędzie nie wiem co jest nie tak
  1. $resultat = $polaczenie->query(sprintf("SELECT uzytkownicy.user, uzytkownicy.image, swiat.*, uzytkownicy.user, uzytkownicy.image, sport.*, uzytkownicy.user, uzytkownicy.image, rozrywka.*, uzytkownicy.user, uzytkownicy.image, polityka.* FROM uzytkownicy, swiat, sport, rozrywka, polityka where uzytkownicy.id=swiat.login and uzytkownicy.id=sport.login and uzytkownicy.id=rozrywka.login and uzytkownicy.id=polityka.login order by ('swiat.data, sport.data, rozrywka.data, polityka.data') desc"));

a jeśli wyciągam 2 tabele to działa
  1. SELECT uzytkownicy.user, uzytkownicy.image, swiat.*, uzytkownicy.user, uzytkownicy.image, sport.* FROM uzytkownicy, swiat, sport WHERE uzytkownicy.id=swiat.login AND uzytkownicy.id=sport.login ORDER BY swiat.DATA, sport.DATA DESC
Crozin
1. Baza danych na pewno zwróciła jakiś komunikat o błędzie, o ile do takiego w ogóle dochodzi. Co najwyżej po stronie aplikacji go nie obsługujesz - nie wiemy z czego korzystasz do obsługi połączenia, jeżeli PDO upewnij się, że ładnie rzuca wyjątkami: https://www.google.pl/webhp?sourceid=chrome...ow%20exceptions
2. Tak trochę poza tematem.... resultat - co?!
3. Kilka razy próbujesz pobrać te same kolumny (uzytkownicy.user, uzytkownicy.image), po co?
4. W klauzuli WHERE kilka razy masz warunek uzytkownicy.id = ABC.login. Na pewno nie porównujesz liczby do tekstu?
5. Jesteś świadomy, że w klauzuli ORDER BY podałeś tekst, a nie listę kolumn? A ewentualną informację o kierunku sortowania (DESC) powinieneś powtórzyć dla każdej z kolumn.
viking
W order by wyrzuć `` wokół wielu kolumn na raz. Po co wybierasz po kilka razy uzytkownicy.user?
jaca121212
To może to inaczej wytłumaczę abyście mnie dobrze zrozumieli mam 4 tabele (swiat,polityka,rozrywka,sport) w tej tabeli są takie same rekordy, tabela wyglada tak
  1. CREATE TABLE IF NOT EXISTS `swiat` (
  2. `id` int(11) NOT NULL AUTO_INCREMENT,
  3. `login` varchar(30) COLLATE utf8_polish_ci NOT NULL,
  4. `tresc` text COLLATE utf8_polish_ci NOT NULL,
  5. `zdjecie` text COLLATE utf8_polish_ci NOT NULL,
  6. `data` datetime NOT NULL,
  7. `ip` varchar(30) COLLATE utf8_polish_ci NOT NULL,
  8. `temat` text COLLATE utf8_polish_ci NOT NULL,
  9. PRIMARY KEY (`id`)
  10. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci AUTO_INCREMENT=67 ;

osobno z tabeli uzytkownicy pobieram zdjecie i id uzytkownika(wyswietlanie nazwy uzytkownika)
chce aby wyświetliło mi wysztkie wpisy z tych 4 tabel oraz zdjecie i nazwę uzytkownika,robiłem to na wzór tego zapytania
  1. SELECT uzytkownicy.user, uzytkownicy.image, swiat.* FROM uzytkownicy, swiat WHERE uzytkownicy.id=swiat.login ORDER BY swiat.DATA DESC

gdy analogicznie dodawałem te pozostałe 3 tabel to jeśli nie było w jednej z tabeli żadnego wpisu to mi nie wyświetlało nic.
Dlatego wam pisałem, że nie wyświetlał się żaden błąd.
Jak to zrobić?

Cytat(Crozin @ 12.11.2015, 08:29:57 ) *
1. Baza danych na pewno zwróciła jakiś komunikat o błędzie, o ile do takiego w ogóle dochodzi. Co najwyżej po stronie aplikacji go nie obsługujesz - nie wiemy z czego korzystasz do obsługi połączenia, jeżeli PDO upewnij się, że ładnie rzuca wyjątkami: https://www.google.pl/webhp?sourceid=chrome...ow%20exceptions
2. Tak trochę poza tematem.... resultat - co?!
3. Kilka razy próbujesz pobrać te same kolumny (uzytkownicy.user, uzytkownicy.image), po co?
4. W klauzuli WHERE kilka razy masz warunek uzytkownicy.id = ABC.login. Na pewno nie porównujesz liczby do tekstu?
5. Jesteś świadomy, że w klauzuli ORDER BY podałeś tekst, a nie listę kolumn? A ewentualną informację o kierunku sortowania (DESC) powinieneś powtórzyć dla każdej z kolumn.

1 Nie wyświela błędu
2 resultat wyświetlam w pętli while
3 Tak ponieważ z bazy uzytkownicy pobieram nazwę oraz zdjęcie
id | login |tresc| zdjecie| data| ip| temat |
67| 46 |tresc wiadomosci| 0 |2015-11-12 08:26:48| xx.xxx.xxx.xxx| test|
5 tak dawałem np tak swiat.data desc i tak dalej dla tych 3 pozostałych i nic to nie dało
viking
Jeśli tabele są takie same to:
SELECT * FROM swiat where login = cos
UNION
SELECT * FROM polityka where...

Poza tym dlaczego łaczysz po uzytkownicy.login nie po uzytkownicy id, które w dodatku nie ma indeksu.
jaca121212
dałem to tak
  1. $resultat = $polaczenie->query(sprintf("SELECT uzytkownicy.user, uzytkownicy.image, swiat.* FROM uzytkownicy, swiat where uzytkownicy.id=swiat.login order swiat.data desc UNION SELECT uzytkownicy.user, uzytkownicy.image, rozrywka.* FROM uzytkownicy, rozrywka where uzytkownicy.id=rozrywka.login order rozrywka.data desc"));

i jest błąd
  1. Warning: mysqli_fetch_array() expects parameter 1 TO be mysqli_result, BOOLEAN given IN /virtual/d/a/darmoweogloszenia.ugu.pl/tematy_losowe.php ON line 44

tak wyglada baza uzytkownicy
podglad tabeli

a tak wyglada baza swiat tak samo wyglada baza rozrywka sport i polityka
podglad tabeli

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.