| Autor | Zpráva | ||
|---|---|---|---|
| Marek P Profil * |
#1 · Zasláno: 16. 5. 2014, 21:05:13 · Upravil/a: Marek P
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 |
#2 · Zasláno: 17. 5. 2014, 08:51:10
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 * |
#3 · Zasláno: 17. 5. 2014, 13:12:49 · Upravil/a: Marek P
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 |
#4 · Zasláno: 17. 5. 2014, 19:13:10
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ě.
|
||
|
Časová prodleva: 12 let
|
|||
0