Autor Zpráva
Darkry
Profil
Zdravím,

nikdy jsem moc s SQL podrobněji nepracoval a nyní mám takový problém. Mám dvě tabulky jedna obsahuje fotogalerii zboží a druhá zboží z eshopu. A já nyní potřebuji vybrat 10 nejnovějších zboží (z každé odděleně, ale tak aby bylo přesně těch 10 nejnovějších dohromady a bylo to správně seřazené. (tj. order by date desc limit 10).

Snad mi rozumíte.

Díky
Tori
Profil
Darkry:
Co znamená "nejnovější zboží" v případě fotogalerie - nejnovější přidané fotky? Nebo 10 nejnovějších druhů zboží, které zároveň mají alespoň jednu fotografii? Totiž nechápu to "z každé odděleně".
Darkry
Profil
Tori:
Ty tabulky spolu vůbec nesouvisí. Fotogalerie je záznam o zboží, které není dostupné na e-shopu, ale v kamenném obchodě dostupné je. Tj. je to jakoby také zboží, ale jsou o něm jiné informace.

Takže jakoby ta první možnost: "nejnovější přidané fotky"
Tori
Profil
Pokud chcete z obou tabulek jen podobné sloupce (ID, název, popis), šlo by použít UNION:
(SELECT 'eshop' AS 'dostupnost', id, nazev, popis, datum FROM zbozi_eshop)
UNION
(SELECT 'kamenny' AS 'dostupnost', id, nazevZbozi, popisZbozi, datum FROM fotogalerie)
ORDER BY datum DESC LIMIT 10
Jak jsem naznačila - názvy sloupců v 1.selectu nemusí být shodné s názvy sloupců ve 2.selectu (použijí se názvy z prvního). Musí se ale shodovat datové typy.
Darkry
Profil
Jo to je přesně ono co potřebuju. Díky moc.


Tenhle SQL dotaz mi hlásí chybu:
(
SELECT id, name, thumbnail, image 
WHERE displayInNews=1 
FROM goods)
 UNION
 (
SELECT id, name, img, origimg 
FROM photos)
ORDER BY date DESC 
LIMIT 10

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE displayInNews=1 FROM goods) UNION (SELECT id, name, ' at line 1

Musí tam být uvedená ta dostupnost jak tam máte? Nebo je chyba jinde?

Díky.
Tori
Profil
Darkry:
Aha, nevšimla jsem si dalšího příspěvku. :)
Máte přehozený části FROM a WHERE. Nejsem si jistá, ale myslím, že bude potřeba do obou dotazů dopsat i sloupeček "date", aby se měl výsledek UNIONu podle čeho řadit (a dát ho do zpětných apostrofů, neb "date" je klíčové slovo).
Darkry
Profil
Díky moc. Teď už to definitivně 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: