Autor Zpráva
Marek P
Profil *
Ahoj, poradí prosím někdo s vytvořením dotazu do mysql databáze?

- mám tři tabulky s názvy: "den", "mesic", "rok".
- z tabulky: "den" bych chtěl načíst všechny řádky, jejichž sloupec s názvem "dpar1" obsahuje hodnotu "yes" a sloupec s názvem "dpar2" hodnotu "1".
- z tabulky: "mesic" bych chtěl načíst všechny řádky, jejichž sloupec s názvem "mpar1" obsahuje hodnotu "yes" a sloupec s názvem "mpar2" hodnotu "1" nebo
"mpar1" obsahuje hodnotu "blank" a sloupec s názvem "mpar2" hodnotu "1" nebo "mpar1" obsahuje hodnotu "back" a sloupec s názvem "mpar2" hodnotu "2".
- z tabulky: "rok" bych chtěl načíst všechny řádky, jejichž sloupec s názvem "rpar1" obsahuje hodnotu "0" a sloupec s názvem "rpar2" hodnotu "1".

zkoušel jsem to sesmolit, ale nejde mi to, trápím se s tím už 4 hodiny :-(

$par = array('yes', 1, 'yes', 1, 'blank', 1, 'back', 2, 0, 1);

$sql = 'SELECT `den.id`, `den.name`
        FROM `den`
        WHERE `dpar1` = ? AND `dpar2` = ?
        JOIN `mesic`
        ON `mesic.id`, `mesic.name`, `rok.next`, `rok.prew`
        WHERE (`mpar1` = ? AND `mpar2` = ?) OR (`mpar1` = ? AND `mpar2` = ?) OR (`mpar1` = ? AND `mpar2` = ?)
        JOIN `rok`
        ON `rok.id`, `rok.name`, `rok.first`
        WHERE `mpar1` = ? AND `mpar2` = ?;';

$stmt = $pdo->prepare($sql);
$stmt->execute($par);
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC | PDO::FETCH_GROUP);

Díky moc za případnou pomoc.


EDIT KÓDU

$par = array('yes', 1, 'yes', 1, 'blank', 1, 'back', 2, 0, 1);

$sql = 'SELECT `den.id`, `den.name`
        FROM `den`
        WHERE `den.dpar1` = ? AND `den.dpar2` = ?
        JOIN `mesic`
        ON `mesic.id`, `mesic.name`, `rok.next`, `rok.prew`
        WHERE (`mesic.mpar1` = ? AND `mesic.mpar2` = ?) OR (`mesic.mpar1` = ? AND `mesic.mpar2` = ?) OR (`mesic.mpar1` = ? AND `mesic.mpar2` = ?)
        JOIN `rok`
        ON `rok.id`, `rok.name`, `rok.first`
        WHERE `rok.rpar1` = ? AND `rok.rpar2` = ?;';

$stmt = $pdo->prepare($sql);
$stmt->execute($par);
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC | PDO::FETCH_GROUP);
Kajman
Profil
A potřebujete tři výsledky z jednotlivých tabulek? Nebo ty tabulky mají mezi sebou nějaké provázání?
Marek P
Profil *
Kajman:
Nemají mezi sebou žádné provázání, jedná se o výpis z jednotlivých tabulek. Asi jsem JOIN nepochopil, myslel jsem, že se stím dájí načíst data z více tabulek jedním voláním do DB.


Doplnění: Jedná se o výpis z jednotlivých tabulek ale každá tabulka má jiné podmínky...
Kajman
Profil
Tak udělejte tři dotazy. Join je na něco jiného - spojování (či kombinování) záznamů z více tabulek. Where, které používáte, vypadá použitelně.

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: