Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: czy to mozna uproscic
Forum PHP.pl > Forum > Bazy danych
ydy10
  1. <?php
  2. $sql1 = "SELECT * FROM artykuly_c WHERE id='".$_GET['id']."'";
  3.  $wykonaj1 = mysql_query( $sql1 );
  4.  while( $artykuly = mysql_fetch_array ( $wykonaj1 ) )
  5.  {
  6.  $sqlbb = "SELECT * FROM artykuly_b WHERE id='".$artykuly['id_b']."'";
  7.  $wykonajbb = mysql_query( $sqlbb );
  8.  while ( $artykuly_b = mysql_fetch_array ( $wykonajbb ) )
  9.  {
  10.  $sql_a = "SELECT * FROM artykuly_a WHERE id='".$artykuly_b['id_a']."'";
  11.  $wykonaj_a = mysql_query( $sql_a );
  12.  while ( $artykuly_a = mysql_fetch_array ( $wykonaj_a ) )
  13.  {
  14. }
  15. }
  16. }
  17. ?>


czy mozna taki kod zastapic jednym zapytaniem, uproscic go ?
Zbłąkany
Oczywiście, że tak smile.gif , poczytaj o JOIN smile.gif .
mike
Chy tabele artykuly_a, artykuly_b, artykuly_c sa takie same?

Bo jeśli tak to zalecam przebudowę bazy danych, którą (jęśli sa takie same) projektował ktoś kto nie ma o tym zielonego pojęcia.
free
Mike_mech przyznam ze mam na swojej stronie wlasnie 3 tabelki o tej samej strukturze. Są oddzielne, bo dzieki temu jest wieksza przejrzystosc danych. Kazda zawiera od kilkudziesieciu do kilkuset rekordow w danej kategori.
Jakie korzysci bede miał gdy złączę je w całość ?
SongoQ
Cytat
Jakie korzysci bede miał gdy złączę je w całość ?

To ze typem artykuly bedziesz mog zawezac dane.
ydy10
zupelnie inna jest struktura.
a(3 pola)i b(6pol) to sa kategorie
c(11 pol) - artykuly


a jak by wygladal w/w z wykorzystaniem JOIN questionmark.gif
SongoQ
Np tak
  1. SELECT * FROM tabela1 LEFT JOIN tabela2 ON warunek LEFT JOIN tabela3 ON warunek
free
Jezeli mam 3 tabele o tej samej konstrukcji, to jak wyswietlic dane z wszystkich 3 tabel o wspolnym warunku ?
SongoQ
Zastosuj WHERE i podaj takie same id.
free
  1. <?php
  2. if(isset($_GET['page'])){
  3.  $page=$_GET['page'];
  4. if($page == 'szukaj'){
  5. $search=$_POST['search'];
  6.  $wyniki=explode(" ",$search);
  7.  $warunki=" (tytul LIKE '%$wyniki[0]%' || info LIKE '%$wyniki[0]%')";
  8. for ($i=1;$i<count($wyniki);$i++)
  9. {
  10. $warunki.=" and (tytul LIKE '%$wyniki[$i]%' || info LIKE '%$wyniki[$i]%')";
  11. }
  12.  $pytanie = "SELECT * FROM tabela1 WHERE $warunki UNION SELECT * FROM tabela2 WHERE $war
    unki 
  13.  UNION SELECT * FROM tabela3 WHERE $warunki ORDER BY id DESC ";
  14.  $result = mysql_query($pytanie);
  15.  $ile = mysql_num_rows($result);
  16. ?>

Wyrzuca mi błąd w ostatniej linijce. Co robię nie tak ?
SongoQ
Jaki blad i czy przypadkiem poprawnie zapytanie zbudowales ORDER BY? Wydaje mi sie ze do calosci powinno byc zastosowane
free
Wywala błąd :
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in szukaj.php " title="Zobacz w manualu php" target="_manual w ostaniej linijce.
Czyli coś nie tak jest w linijce
  1. $ile = mysql_num_rows($result);

Warunki są dobre. Do tej pory działało jak nie mialem polacznia UNION czyli
  1. $pytanie = "SELECT * FROM tabela1 WHERE $warunki ORDER BY id DESC
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.