Skocz do zawartości

Wybieranie danych z kilku tabel w jednym zapytaniu


Dominik23

Rekomendowane odpowiedzi

Witam.

Mam problem z pobieraniem rekordów z wielu tabel w jednym zapytaniu SQL.

Na samym początku potrzebowałem sume wszystkich rekordów z kilku tabel, aby móc postronicować wyniki ale miałem kłopot ze zliczeniem wszystkich rekordów za pomocą count(*) z kilku tabel na raz, ponieważ w odpowiedzi zwraca wszystkie możliwe kombinacje, to sobie stworzyłem oddzielne zapytania do każdej tabeli (nie wiem czy to jest wydajne ale końcowy wynik mi wyszedl ;))

$tab="tabela1";

$tab2="tabela2";

$tab3="tabela3";

$tab4="tabela4";

$tab5="tabela5";

$tab6="tabela6";

$tab7="tabela7";

$query = mysql_query("SELECT count(*) FROM $tab");

$row = mysql_fetch_array($query);

$query2 = mysql_query("SELECT count(*) FROM $tab2");

$row2 = mysql_fetch_array($query2);

$query3 = mysql_query("SELECT count(*) FROM $tab3");

$row3 = mysql_fetch_array($query3);

$query4 = mysql_query("SELECT count(*) FROM $tab4");

$row4 = mysql_fetch_array($query4);

$query5 = mysql_query("SELECT count(*) FROM $tab5");

$row5 = mysql_fetch_array($query5);

$query6 = mysql_query("SELECT count(*) FROM $tab6");

$row6 = mysql_fetch_array($query6);

$query7 = mysql_query("SELECT count(*) FROM $tab7");

$row7 = mysql_fetch_array($query7);

$size= $row['count(*)'];

$size2 = $row2['count(*)'];

$size3 = $row3['count(*)'];

$size4 = $row4['count(*)'];

$size5 = $row5['count(*)'];

$size6 = $row6['count(*)'];

$size7 = $row7['count(*)'];

$size9 = $size + $size2 + $size3 + $size4 + $size5 + $size6 + $size7;

To może nie jest meritum problemu, zaczne od struktury tabel która jest identyczna dla wszystkich tabel tylko nazwy tabel i ich zawartość jest inna!

Chce je połączyć w jedno zapytanie, przy jednej tabeli wyglądało to tak:

$naStronie = 1; // jeden rekord

if($_GET['podstronka']) $kat = $_GET['podstronka'];

else $kat = 0;

$start = $kat*$naStronie;

$que = mysql_query("SELECT * FROM $tab ORDER BY `$url_id` DESC LIMIT $start, $naStronie");

while($wie = mysql_fetch_array($que)) {

$url_id = $wie['url_id'];

$url = $wie['url'];

$typ = $wie['typ'];

$PR = $wie['PR'];

$token = $wie['token'];

$chek = $wie['chek'];

echo "Wyświetlenie np. jednego adresu url $url";

}

Po niżej chciałem je połączyć w jednym zapytaniu, ale nie idzie!!

$que = mysql_query("SELECT * FROM $tab, $tab2, $tab3, $tab4, $tab5, $tab6, $tab7 ORDER BY `$url_id` DESC LIMIT $start, $naStronie");

Proszę o pomoc bo jestem zielony :/

Witryna Biznesu - najlepsza promocja biznesu w sieci.

Odnośnik do komentarza
Udostępnij na innych stronach

dałbym

UNION ALL

a pozostała cześć jest OK

sam union jeżeli dodasz dwie identyczne tabele o 100 rekordach zwróci 100 rekordów

UNION ALL zwróci 200 rekordów :D

To taka mała subtelna różnica i czesto wychodzi jak sie dokładnie sprawdza wynika albo przechodzi sie z wersji developerskiej do prawdziwych danych ;)

Aha ! Do zielonego !

1) Poczytaj troche dokumentacji do SQL-a bo zginiesz marnie bez podstaw.

2)Jak wklejasz kod to zaznacz ze to kod (taka ikonka nad polem edycyjnym, pierwsza z prawej ;)

3)Czasami warto zastosować instrukcje iteracji (tzw. PĘTLE)

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności