Autor Zpráva
milbr
Profil *
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
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 *
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
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
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 *
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
Já jsem na tom stejně jako kolega Alphard, jsem zmaten co vlastně chcete :-)
WanTo
Profil
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 *
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

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: