Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Dziwne zapytanie do bazy
Forum PHP.pl > Forum > Bazy danych
lukasamd
Witam,
robię sobie obecnie download, i nie wiem jak rozwiązać pewien problem.

Mam 2 tabele:
- download_kategorie
- download_pliki

Elementem wspólnym jest w tabelach odpowiednio kategoria_id i plik_kategoria.

Chcę sobie zrobić coś takiego:



Nie ma niby problemu, ale czy da się to zrobić, wykonując 2 zapytania do bazy?
Normalnie operacja powinna wyglądać tak.

1. Zapytanie do bazy -> kategorie
2. Pętla while
- zapytanie do bazy -> pliki z tej kategorii
- pętla while -> wyświetlanie plików
3. Koniec


Powiedzmy że chcę zrobić tak, aby wewnątrz pierwszej while nie robić już zapytania - nie przepadam za takimi konstrukcjami (co jeżeli będzie 1000 kategorii?).

Da się wykonać takie 2 zapytania, aby potem można było pliki uporządkować do odpowiedniej kategorii?


PS: Sorki za nie ten dział! Chyba się zagapiłem. Proszę moderatora o przeniesienie.
czachor
Myślę, że dałbyś radę wytłumaczyć problem bez tych obrazków winksmiley.jpg Jeśli dobrze Cię rozumiem, to poczytaj w manualu bazy danych o JOIN.
lukasamd
Wiem co to jest join, ale jakoś nie widzę możliwości, aby pobrać kategorie, a do każdej z nich odpowiednie pliki.

W wypadku 1 kategoria i pliki z niej byłoby tak:

  1. SELECT dk.*, dp.*
  2. FROM download_kategorie dk
  3. INNER JOIN download_pliki ON dk.kategoria_id=dp.plik_kategoria
  4. WHERE kategoria_id=X


gdzie X to kategoria. Ale mi chodzi o połaczenie takiego zapytania, z pobraniem WSZYSTKICH kategorii (a co za tym idzie, wszystkich plików).
mdx
1. nie dołączaj pliku do kategorii, a kategorię do pliku
2. wywal where
3. po takim zapytaniu w php:
  1. <?php
  2. $result = array();
  3. foreach($rows as $row){
  4.    $result[$row['id_kategorii']][$row['id_pliku']] = $row;
  5. }
  6.  
  7. var_dump($result);
  8. ?>
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.