Autor Zpráva
Jankky
Profil *
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
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 *
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
Toto téma je uzamčeno. Odpověď nelze zaslat.