Autor | Zpráva | ||
---|---|---|---|
milbr Profil * |
#1 · Zasláno: 14. 8. 2008, 19:09:41
Dobrý večer, chtěl bych vás poprosit o pomoc při řešení výpisu ze dvou tabulek.
Již se to tady řešilo ale chtěl bych poprosit o příklad výpisu for nebo while. http://diskuse.jakpsatweb.cz/index.php?action=vthread&forum=28&topic=4 2454 Z tabulky registr_klient bych potřeboval vybrat na základě session_id klienta a k němu přiřadit všechny záznamy z druhé tabulky knihy session_id a id jsou shodné. Takto mi to vypíše 4x toho samého klienta. $data_klient = MySQL_Query("select * from registr_klient, knihy where registr_klient.session_id = knihy.id ") ; { while ($data_objednavky=MySQL_Fetch_Array($data_klient)): echo " ".$data_objednavky['jmeno']." " ; endwhile; }; |
||
somebody Profil |
#2 · Zasláno: 14. 8. 2008, 19:32:09
zaprvé, máš špatnou sekci :-)
zadruhé nevidím důvod mít obalený while {} zatřetí v tabulce knihy se tí to id asi opakuje, proto to vypisuje 4x. Takže použí : $data_klient = MySQL_Query("select * from registr_klient, knihy where registr_klient.session_id = knihy.id GROUP BY registr_klient.session_id ") ; |
||
milbr Profil * |
#3 · Zasláno: 14. 8. 2008, 20:07:33
Omlouvám se za sekci, nějak mi to ujelo.
Prosím o přeřazení somebody Moc díky nenapadlo mě to s GROUP BY registr_klient.session_id Teď se to vypíše tak jak má ale z tabulky knihy se vypíše jen jeden záznam. Je jich tam více se stejným id. Nějak takto: Libor XXXX kniha 01 kniha 02 kniha 03 Libor YYY kniha 01 kniha 02 |
||
WanTo Profil |
#4 · Zasláno: 14. 8. 2008, 20:12:05
milbr
Tohle jedním SQL dotazem neuděláš (jestli ano, tak mě někdo prosím opravte). Nejdřív si vybereš z databáze seznam klientů - první dotaz - a pro každého klienta si vybereš seznam odpovídajících knih - druhý dotaz. Nakonec knihy vypíšeš ve vnořeném cyklu. |
||
Alphard Profil |
#5 · Zasláno: 14. 8. 2008, 20:12:56 · Upravil/a: Alphard
milbr
a jak to chcete vypsat? je normální, že když tam dáte group, tak si databáze vybere 1 záznam, nemá jinou možnost když vám vrátí všechny 4, taky se vám to nelíbí, co vlastně chcete? v sql je funkce group_concat(), ale to taky asi není to pravé // špatně jsem pochopil váš předchozí příspěvek, nechte původní dotaz, seřaďte to podle jména (aby byly pohromadě) a oddělte to v PHP // čtu to potřetí a zase to chápu jinak, asi jsem unavený :-), mazat to nebudu, ale asi poradí někdo jiný |
||
milbr Profil * |
#6 · Zasláno: 14. 8. 2008, 20:21:47
WanTo
Prosím jak by měl ten vnořený cyklus asi vypadat? Moc díky Alphard Taky moc díky, co myslíte oddělením v php? správné sestavení while výpisu? |
||
somebody Profil |
#7 · Zasláno: 14. 8. 2008, 20:28:09
Já jsem na tom stejně jako kolega Alphard, jsem zmaten co vlastně chcete :-)
|
||
WanTo Profil |
#8 · Zasláno: 14. 8. 2008, 20:29:06
milbr
Jen pro inspiraci, budeš si to samozřejmě muset odladit a upravit, aby to fungovalo na tvé databázi (neznám jména všech sloupců a nezaručuji, že jsem někde nezapomněl středník :) ). $queryUsers = mysql_query("SELECT * FROM registr_klient"); while ($user = mysql_fetch_array($queryUsers)) { $sessionId = $user["session_id"]; $queryBooks = mysql_query("SELECT * FROM knihy WHERE id = $sessionId"); if (mysql_num_rows($queryBooks) != 0) { echo "Uživatel: " . $user["name"]; while ($book = mysql_fetch_array($queryBooks)) { echo "Kniha: " . $book["name"]; } } } |
||
milbr Profil * |
#9 · Zasláno: 14. 8. 2008, 20:46:17
WanTo
Mooooooooooooooc!!!!!! díky To je přesně to co jsem potřeboval. Ještě jednou všem moc děkuju a přeju pěkný večer. Milan |
||
Časová prodleva: 17 let
|
0