Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Czy da się wyciągnąć w jednym zapytaniu i jednym while dane z 2 tabel bez ich powiązania ?
Forum PHP.pl > Forum > Przedszkole
Elber
Witam, czy da się wyciągnąć w jednym zapytaniu i jednym while dane z 2 tabel bez ich powiązania ?

Czyli, mam tabele klienci i w niej pola typu id, nazwa itp i pole rabat_id

oraz mam tabele rabat gdzie jest rabat_id i name

(przy czym rabatów jest kilka, ale klient ma przypisany tylko jeden)

i chciałbym wyświetlić te dane z możliwością zmiany rabatu, czyli muszą być wszystkie rzeczy z tabeli klienci, ma pokazać który rabat ma klient, oraz obok tego wszystkie rabaty z tabeli rabat np. tak:

Nazwa
E-mail
dane...

Rabat:
<select>
<option>Aktualny rabat(czyli ten co klient ma w tabeli)</option>
<option>kolejny rabat</option>
<option>kolejny rabat itd</option>
<option>itd</option>
</select>
pianta_d
Już miałem napisanego gotowca, ale...

Ad. 1
Zajrzyj do manuala MySQL i poczytaj o SELECT

Ad. 2
Jak zapoznasz się z tym co wskazałem wyżej napisz, poradzimy.

Pozdrawiam
Elber
Aktualnie jestem na etapie wyciągania danych z 2 tabel ale z powiązaniem czyli LEFT JOIN ON i nie mam pomysłu jak ugryźć mój problem sad.gif
pianta_d
...

  1. SELECT * FROM klienci, rabat WHERE rabat.rabat_id=klienci.rabat_id



...
pod warunkiem, że każdy klient ma dopisany jakiś rabat
Elber
Tak, każdy klient ma rabat ... ale mi nie o to chodziło ... wylistować to wszystko umiem sam ... pytanie moje konkretnie rozchodziło się czy dodatkowo mogę pobrać za jednym razem z bazy te wszystkie rekordy z tabeli rabaty czyli oprócz tego że przypisze mi nazwę rabatu klienta do klienta to żeby wyświetlić pozostałe rabaty z tabeli smile.gif

Edit.

Czy muszę zrobić 2 zapytanie i 2giego while które wylistuje mi pozostałe rabaty z tabeli ?
pianta_d
Ok, źle Cię zrozumiałem.
Kiedyś potrzebowałem czegoś podobnego
Poradziłem tak

  1. <select name="ksiazka_nr">
  2. <option value="0">Brak danych</option>
  3. <?
  4. $sql = "SELECT * FROM `ksiazki`";
  5. $result = mysql_query($sql);
  6. while ($row = mysql_fetch_assoc($result))
  7. {
  8. if($row[id_ksiazka] == $nr_ks)
  9. {
  10. $zaznacz='selected';
  11. }
  12. else
  13. {
  14. $zaznacz='';
  15. }
  16. echo '<option value="'.$row[id_ksiazka].'"'.$zaznacz.'>'.$row[nazwa_ksiazka].'</option>';
  17. }
  18. ?>
  19. </select>


Tylko, że robiłem to w edycji rekordu a nie na listingu (o ile dobrze rozumiem Twojego 1 posta)
$nr_ks to zmienna do której przypisywałem aktualny numer książki (u Ciebie aktualny id rabatu w tabeli klienci).

Pozdrawiam
Elber
Spoko wink.gif dzięki ale nie musiałeś pisać kodu smile.gif Sens mojego pytania brzmiał czy można to zrobić w 1 zapytaniu i 1 while smile.gif) Ale chyba się nie da smile.gif
Leihto
Możesz np tak:
  1. mysql_query("SELECT a.*, b.* FROM `tabela` a, `tabela2` b WHERE a.coswpierwszejtabeli = b.coswdrugiejtabeli ORDER BY a.cosztabelipierwszej ASC");
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.