Autor | Zpráva | ||
---|---|---|---|
Jankky Profil * |
#1 · Zasláno: 30. 8. 2006, 02:43:24
Dobrý den,
prosím znalce php o radu. V MySQL databázi mám dvě tabulky: tab 1: lide ---------------------------------------------------------------------- --- | id | jmeno | prijmeni | bydliste | datum_narozeni | parent | active | ---------------------------------------------------------------------- --- | 1 | alfa | novy | brno | 1950-03-03 | 1 | 1 | | 2 | beta | novak | praha | 1960-02-02 | 9 | 1 | | 3 | gama | novotny | ostrava | 1920-06-06 | 3 | 1 | | 4 | delta | polni | zlin | 2000-08-08 | 1 | 0 | | 5 | epsilon | smrcek | zlin | 2001-01-01 | 1 | 1 | tab 2: skoly ----------------- | id | vzdelani | ----------------- | 1 | ZS | | 3 | SS | | 4 | VOS | | 9 | VS | a potřeboval bych mít php script, ktery z nich umí vyhledat 3 nejmladší osoby. (které jsou aktivní; a vypíše od nich údaje jmeno, prijmeni, bydliste, vzdelani). Jediný problém mám s vypsáním vzdělání z druhé tabulky. Mám script: <!-- 3 nejmladsi --> <?php require("_abc/listy.php"); $lide = MySQL_Query("SELECT jmeno, prijmeni, bydliste, parent FROM lide WHERE active=1 ORDER BY datum_narozeni DESC"); $skupiny = MySQL_Query("SELECT vzdelani FROM skoly ORDER BY id"); for ($i=0 ; $i<3 ; $i++) { echo "<p>first name: ".MySQL_Result($lide, "$i","jmeno").", family name: ".MySQL_Result($lide, "$i","prijmeni").", adress: ".MySQL_Result($lide, "$i","bydliste")."</br>"; $CisloRawOfGroup = ???????????????????????????; echo ", kvalifikace: ".MySQL_Result($skupiny, "$CisloRawOfGroup","vzdelani")."</p>"; } ?> <!-- / 3 nejmladsi --> ale nevím, co dát místo otazniků. Správný výsledek by v tomto případě měl vypadat takto: first name: epsilon, family name: smrcek, adress: zlin, kvalifikace: ZS first name: beta, family name: novak, adress: praha, kvalifikace: VS first name: alfa, family name: novy, adress: brno, kvalifikace: ZS ale u vzdělání mi to dělá nepořádek. Můžete poradit, co v scriptu dosadit místo otazníků (nebo jinam) aniž bych měnil obsah tabulek? (neměnit id v tabulce skoly) Děkuji! J. |
||
Joker Profil |
#2 · Zasláno: 30. 8. 2006, 08:15:24 · Upravil/a: Joker
Nemusíte to dělat tak složitě... udělejte dotaz:
SELECT p.jmeno, p.prijmeni, p.bydliste, s.vzdelani FROM lide p JOIN skoly s ON p.id=s.id WHERE p.active=1 ORDER BY p.datum_narozeni DESC LIMIT 3 a pak prostě vypíšete ty tři řádky, co Vám to vrátí. edit: Jo, předpokládám teda, že id v tabulce "skoly" se vztahuje k id v tabulce lide. Jinak mi není moc jasné, jak to chcete párovat. Můj dotaz nezobrazí řádky, kde neexistuje příslušný záznam v tabulce skola, tj. vzdělání není známé. Pokud byste chtěl i takové řádky vypsat, místo JOIN použijte LEFT JOIN |
||
Jankky Profil * |
#3 · Zasláno: 30. 8. 2006, 13:24:23
Dobrý den,
děkuji za odpověď. ID v tabulce lide = parent v tabulce skoly (ve vašem návrhu jsem si to upravil). Vaše řešení funguje správně. Moc jste mi pomohl, DÍKY !!!. Vladislav Jankových |
||
Časová prodleva: 18 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0