Autor Zpráva
Jiří Šťastný
Profil
Ahoj všem, chtěl bych se jen zeptat (poprosit o radu), jak postupovat, když chci načíst data ze dvou tabulek pomocí SQL tak, aby se mi vždy načetli 3 záznami z jedné tabulky a čtvrtý záznam z druhé, takto stále dokola. Poradí s tím někdo?
Kajman
Profil
Máte už verzi s podporou window funkcí?
Jiří Šťastný
Profil
To popravdě nevím, ale dost o tom pochybuji. Jedná se o standardní MySQL na veřejném webhostingu (WEDOS).
Kajman
Profil
Svoji verzi databáze zjistíte sql příkazem
select version()

Pokud funguje dotaz
select row_number() over() from dual
mělo by to jít přímo v dotaze díky díky union.

Ve starších verzích si to raději poskládejte z dvou výsledků až v php.
Jiří Šťastný
Profil
Na dotaz select version() se mi zobrazí jen číslo verze a to je: 5.6.10.

Při tom druhém dotazu dostávám chybovou hlášku na syntaxi.
Jiří Šťastný
Profil
Chtěl bych ještě dodat, že mezi těmi dvěma tabulkami není žádný vztah. Obě mají jen sloupeček date_lastedit podle kterého řadím ty záznami.


Tak se mi kýženého výsledku podařilo dosáhnout pomocí příkazu UNION. :)
Kajman
Profil
A jak jste vyřešil, že se střídají vždy 3 řádky s jedním?
Jiří Šťastný
Profil
Popravdě ještě nevyřešil, musel jsem odejít od počítače. Říkal jsem si, že to snad půjde limitováním. Řazení nebylo problém, protože obě tabulky mají stejný sloupeček, podle kterého se to má řadit (datum poslední úpravy). Ale když se na to teď ptáte, tak si říkám, že to asi tak jednoduché nebude.
Kajman
Profil
S row_number by to jednoduché bylo. Takto bych si udělal v php dva dotazy a z nich postupně bral řádky. Něco jako

$citac_prvni_tabulky=0;
while($tab1_radek=vemjedenradek($result1))
{
    zobraz($tab1_radek);
    $citac_prvni_tabulky++;
    if($citac_prvni_tabulky%3===0 && $tab2_radek=vemjedenradek($result2))
    {
        zobraz($tab2_radek);
    }
}
while($tab2_radek=vemjedenradek($result2))
{
    zobraz($tab2_radek);
}
Jiří Šťastný
Profil
Děkuji za pomoc. Já navíc využívám Nette a snažím se držet Nette Database Explorer, nicméně je mi jasné, že takto pokročilé věci bych v tom dělal jen těžko. Zaměřím se asi na pozdější seřazení v PHP.

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