Portál AbcLinuxu, 10. května 2025 13:53
Dáta v databáze
kat1 | kat2 |
kat3 |
ab | ||
ad | aa | |
ah | af | ac |
ai | ag | aj |
Potrebujem výstup
aa |
ab |
ac |
aj |
Chcem to zotriediť cez MySQL, v PHP by som to vedel, ale musel by som dať viacero dotazou do databázy, čím by sa to celé spomalilo.
Podmienka znie: Začni na prvom stĺpci s ľava ak sa názov stĺpca nezačína na "kat", tak potom vráť "nokat", ak sa názov stĺpca začína na "kat" pozri sa do stĺpca vpravo (ak sa názov začina na "kat" a je nulový vráť obsah aktuálneho stĺpca) alebo ak (sa názov stĺpca napravo nezačína na "kat" vráť hodnotu aktuálneho stĺpca) inak "čiže ak sa názov stĺpca začína na kat a je nenulový, pozri sa do ďaľšieho stĺpca či sa nezačína na kat a je nenulový prípadne sa stĺpec nezačína na kat" §toto musí bežať v slučke§ vráť hodnotu aktuálneho stĺpca, výsledok zoraď vzostupne podľa abecedy.
Řešení dotazu:
Tá podmienka nebola úplne dobre napísaná takže úprava, ale díky za doterajšie odpovede, možno niečo s toho použijem:
Ja som to napisal symbolicky, toto potrebujem pretransormovať pre MySQL
function najdi_ posledny _kat(aktualny() {
while ((nazov_stlpca(aktualny_stlpec +1) == $left(3,"kat")) AND (obsah_stlpca(aktualny_stlpec +1) != NULL)) {
aktualny_stlpec++
}
return (obsah_stlpca(aktualny_stlpec)
}
if (prvy_stlpec_z_lava != $left(3,"kat")) {
vysledok = "nokat"
}
else {
if ((nazov_stlpca(aktualny_stlpec +1) == $left(3,"kat")) AND (obsah_stlpca(aktualny_stlpec +1)==NULL)) OR (nazov_stlpca(aktualny_stlpec +1) != $left(3,"kat")) {
vysledok = obsah_stlpca(aktualny_stlpec)
}
else {
function najdi_posledny_kat(aktualny(aktualny_stlpec)
vysledok = obsah_stlpca(aktualny_stlpec)
}
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.