Autor Zpráva
vaclav999
Profil
Zdravím všechny, pomůže mi někdo zformulovat dotaz? Už fakt nevim.
Mám 4 tabulky v první eviduji články, v další galerie obrázků, v další pak jednotlivé obrázky a poslední je propojení článků a galerií. Pro dotaz jsou podstatné tři tedy články, obrázky a propojení.-sloupce zjednodušuji, píšu jen podstatné pro dotaz.

1)články - article
id_ar | nazev_ar
1 | nazev1
2 | nazev2

2)obrázky - images
id_img | gallery_img | nazev_img
1 | 1 | 112
2 | 1 | 113
3 | 2 | 214
4 | 2 | 215

3)propojení - vazby_ar_ga
id_ar_ga | article_ar_ga | gallery_ar_ga
1 | 1 | 2
2 | 2 | 1

Snažím se zformulovat dotaz tak, aby výsledkem byly řádky kde se pro jednotlivé články přiřadí jeden obrázek s nejvyšším názvem(číslem) výsledek by tedy měl být tento:
1 nazev1 215
2 nazev2 113

Amatérsky by to jednoduše šlo udělat v jednom dotazu se zeptat na přidruženou galerii k článku a pak v cyklu se u každého článku zeptat jaké jsou obrázky a vybrat s nejvyšším číslem. Jak to ale napsat do jednoho dotazu?
Předem všem díky.
TomášK
Profil
SELECT 
    nazev_ar, 
    MAX(nazev_img)
FROM 
    article 
    JOIN vazby_ar_ga ON article_ar_ga = id_ar
    JOIN images ON gallery_ar_ga = id_img
GROUP BY 
    id_ar
vaclav999
Profil
Super, to je ono!! Jen je tam malá chybka ne id_img ale gallery_img
SELECT
nazev_ar,
MAX(nazev_img)
FROM
article
JOIN vazby_ar_ga ON article_ar_ga = id_ar
JOIN images ON gallery_ar_ga =gallery_img
GROUP BY
id_ar

Ještě malé rozšíření. Jak by se udělalo, kdybych chtěl přiřadit třeba obrázek ne s největším číslem ale třeba 5 v pořadí od největšího?
Každopádně díky moc.
vaclav999
Profil
A nebo ještě jinak, co kdyby nazev_img nebylo číslo ale řetězec a chtěl bych to napřed nějak seřadit a pak vybrat první záznam? Rád se přiučím.
Předem díky.
TomášK
Profil
Za chybku se omlouvám. Pro vlastní řazení bude potřeba obdoba tohoto dotazu:
SELECT *
              FROM zamestnanci z
             WHERE mzda IN (SELECT mzda
                               FROM zamestnanci
                              WHERE z.profese = profese
                              ORDER BY mzda DESC
                              LIMIT 2)

který jsem přezval z
http://www.root.cz/clanky/korelovane-vnorene-dotazy-nepouzivat-a-nahradit/. Na přiučení
výborný článek ;-)
vaclav999
Profil
Díky, super článek. Snad Vám to budu někdy moct oplatit.
Kajman_
Profil *
No, hlavně se v něm dočtete, že je to velice náročné a když budete mít v tabulkách hodně záznamů, bude to šíleně pomalé.

V mysql to jde zrychlit přes uživatelské proměnné
http://diskuse.jakpsatweb.cz/index.php?action=vthread&forum=28&topic=89155#10
(Někomu se tu stalo, že to nefungovalo, ale to byl nějaký složitější dotaz, na jednoduché to funguje.)

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:

0