Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Spajanje više Tabela

[es] :: MySQL :: Spajanje više Tabela

[ Pregleda: 245 | Odgovora: 3 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Wizard4U

Član broj: 178049
Poruke: 116
*.adsl.net.t-com.hr.



Profil

icon Spajanje više Tabela04.07.2008. u 12:57

Molim za jednostavno objašnjenjenje, u prilogu je struktura tablice! E sa uzmimo za primjer da ispišemo spread(oglas).naslov i onda Ime kategorije,Superkategorije,Naselje iregije! Za to trebamo spojit tri tablice :category, place i spread! Znam spojiti ddvije preko INNER JOIN ali ne znam više pa bih molio da mi na ovom primjeru netko objasni da znam za dalje!
Hvala

Struktura tablice=> http://www.web-izrada.net/str.jpg

80% Tinejdzera na svetu slusa/pocinje da slusa RAP. Ako si ti medju preostalih 20%, stavi ovo u svoj potpis
04.07.2008. u 12:57 

Shinhan
Assistant PHP programmer
Subotica

Član broj: 12327
Poruke: 169
91.150.127.*

Jabber: shinhan@elitesecurity.org
ICQ: 400847988


Profil

icon Re: Spajanje više Tabela07.07.2008. u 12:47
Gde su ti tabele superkategorija, regija, rubrika i jezika?

Nego, za samo pitanje, el si probao ovako nešto:
Code:

SELECT * 
FROM spread AS s
 INNER JOIN category AS c ON s.category_id = c.category_id
 INNER JOIN place AS p ON p.id = s.naselje_id

"Common sense is not so common." - Voltaire
07.07.2008. u 12:47 

Man-Wolf
Mihailo Joksimovic
Freelancer
Beograd

Član broj: 17016
Poruke: 470
*.eunet.yu.



Profil

icon Re: Spajanje više Tabela21.07.2008. u 18:53
Evo ja da pojasnim sta je hteo da pita :-)

Treba ova 3 query-ja da spoji u jedan:

Code:

1. SELECT * FROM category
2. SELECT COUNT(naslov) AS broj_oglasa FROM spread GROUP BY category_id
3.SELECT COUNT(naslov) AS broj_oglasa FROM spread GROUP BY supercategory_id


:-) E sad, kako to izvesti :-)
80% Tinejdzera na svetu slusa/pocinje da slusa RAP. Ako si ti medju preostalih 20%, stavi ovo u svoj potpis
21.07.2008. u 18:53 

Wizard4U

Član broj: 178049
Poruke: 116
*.adsl.net.t-com.hr.



Profil

icon Re: Spajanje više Tabela22.07.2008. u 00:13
Rješio ovako:
Code:

$rs=db_query("SELECT c.category_name, (SELECT COUNT(p.id) FROM spread p WHERE p.category_id = c.category_id) AS broj_kat,
c.super_name, (SELECT COUNT(p.id) FROM spread p WHERE p.supercategory_id = c.supercategory_id) AS broj_sup FROM category c");


Ali kako sad to staviti u prošli kod da opet normalno funkcionira

prošli kod:
Code:

<?php
include  ('PARTS/header.php');
?>



<?php 
    
// Vadimo sve iz tablice category

$rs = db_query("SELECT * FROM category ORDER BY super_name ASC");

$sid = 0;
$spread = 0;

// Sad ispiši rezultate
while ($result = mysql_fetch_array($rs, MYSQL_ASSOC))
{
  // Prvo proveri da li je doslo do promene Super kategorije ?? Ako jeste, ispiši njen naslov
  // Također, otvaramo novi spread


  if ($sid !== $result['supercategory_id'])    // Doslo je do promene Superkategorije
  { 
      
      // Prvo provjera da li je vec bio otvaran spread
      // Ako nije, onda ga otvori
      // A ako je, onda zatvori stari i otvori novi :D

    if ($spread == 0)     // Spread nije bio otvaran
      {
          $spread = 1;
        echo'<div class="spread">';
      }
      else     // Spread je več bio otvoren
     {
            echo '</div>'; // Zatvori stari
          echo'<div class="spread">'; // I otvori novi :-)
      }

 // ispiši novu super kategoriju
 // Ispisujemo super kategoriju  
     echo "<div class='spread' id='heading'><a href='rubrika/".$result['supercategory_id']."'>". $result['super_name'] ."</a></div>";
 // Podesi $sid 
    $sid = $result['supercategory_id'];
  }
 
  echo "<div class='spread' id='text'><a href='kategorija/".$result['category_id']."'>". $result['category_name'] ."</a></div>";
  

}


?>



 <?php
include('PARTS/footer.php');
?>
         
    

80% Tinejdzera na svetu slusa/pocinje da slusa RAP. Ako si ti medju preostalih 20%, stavi ovo u svoj potpis
22.07.2008. u 00:13 

[es] :: MySQL :: Spajanje više Tabela

[ Pregleda: 245 | Odgovora: 3 ]

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.