Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySql] Problem z zaprojektowaniem bazy i z prawidłowym zapytaniem
mariuszg
post
Post #1





Grupa: Zarejestrowani
Postów: 136
Pomógł: 0
Dołączył: 22.06.2006

Ostrzeżenie: (0%)
-----


witam
Ma to być tabela z danymi samochodów: marka, model, typ, silnik, kolor, typ_nadwozia, ABS, itd.

Tak pomyślałem że najlepiej do marki, modelu i typu zrobić osobne tabele i w tabeli głównej przechowywać tylko numery „id” co przyspieszy wyszukiwanie w bazie danej marki auta.
Nie wiem czy to najlepsze rozwiązanie.

Na razie tak zrobiłem i już mam problem z zapytaniem do bazy. Mam tak:


  1. CREATE TABLE `dane` (
  2. `id` int(11) NOT NULL AUTO_INCREMENT,
  3. `id_marka` int(11) NOT NULL,
  4. `id_model` int(11) NOT NULL,
  5. `id_typ` int(11) NOT NULL,
  6. PRIMARY KEY (`id`)
  7. ) ENGINE=MyISAM AUTO_INCREMENT=9 DEFAULT CHARSET=latin2 AUTO_INCREMENT=9 ;
  8.  
  9. CREATE TABLE `marka` (
  10. `id` int(11) NOT NULL AUTO_INCREMENT,
  11. `marka` varchar(11) NOT NULL,
  12. PRIMARY KEY (`id`)
  13. ) ENGINE=MyISAM AUTO_INCREMENT=10 DEFAULT CHARSET=latin2 AUTO_INCREMENT=10 ;
  14.  
  15. CREATE TABLE `model` (
  16. `id` int(11) NOT NULL AUTO_INCREMENT,
  17. `id_marka` int(11) NOT NULL,
  18. `model` varchar(11) NOT NULL,
  19. PRIMARY KEY (`id`)
  20. ) ENGINE=MyISAM AUTO_INCREMENT=10 DEFAULT CHARSET=latin2 AUTO_INCREMENT=10 ;
  21.  
  22. CREATE TABLE `typ` (
  23. `id` int(11) NOT NULL AUTO_INCREMENT,
  24. `id_model` int(11) NOT NULL,
  25. `typ` varchar(11) NOT NULL,
  26. PRIMARY KEY (`id`)
  27. ) ENGINE=MyISAM AUTO_INCREMENT=12 DEFAULT CHARSET=latin2 AUTO_INCREMENT=12 ;



  1. <table width="200" cellspacing="0" cellpadding="0" border="1">
  2. <?php
  3. mysql_connect ('localhost','root','');
  4. mysql_select_db ('ddd');
  5.  
  6. $zapytanie = 
  7. SELECT marka, model, typ FROM dane, marka, model, typ
  8. WHERE dane.id_marka = marka.id and
  9. dane.id_model = model.id and
  10. dane.id_typ = typ.id
  11. ";
  12. $wykonaj = mysql_query ($zapytanie);
  13. while($wiersz=mysql_fetch_array ($wykonaj)) {
  14. <tr>
  15. <td>".$wiersz['marka']."</td>
  16. <td>".$wiersz['model']."</td>
  17. <td>".$wiersz['typ']."</td>
  18. </tr>
  19. ";
  20. }
  21. ?>
  22. </table>


I teraz np.:
marka : Fiat
model: 126
typ: 126 p , 126 el

Jeśli mam tylko markę auta lub markę i model to nic mi nie wyświetli. Muszę mieś komplet przy takim zapytaniu czyli markę model i typ. Jeśli w tabeli głównej będzie tylko id marki i nie będzie modelu i typu, żeby też wyświetliło.
Nie wiem jak napisać poprawnie takie zapytanie. Proszę pomoc.
Go to the top of the page
+Quote Post
wijet
post
Post #2





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 20.12.2005
Skąd: Łódź

Ostrzeżenie: (0%)
-----


Aby zobaczyć rekordy bez model_id,typ_id użyj do złączenia LEFT JOIN


--------------------
Go to the top of the page
+Quote Post
mariuszg
post
Post #3





Grupa: Zarejestrowani
Postów: 136
Pomógł: 0
Dołączył: 22.06.2006

Ostrzeżenie: (0%)
-----


zrobiłem tak:

  1. $zapytanie = " SELECT * FROM dane left join marka on dane.id_marka=marka.id ";


ale nie wiem jak dodać model i typ
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 15:45