Keresés

Új hozzászólás Aktív témák

  • bsh

    addikt

    üdv,
    új kérdésem lenne, még az előbbi "projekthez". a bonyolult sok joines lekérdezés már frankón működik (és gyors is), de még kéne bele egy dolog, és ezt nem bírom megoldani. :O
    adott egy tábla, amiben pdf fájlok helyei vannak (így gyorsabb mint fájlrendszerben keresgélni). van ebben egy RelativePath oszlop, ami ez elérési út fájlnév nélkül UNC formában, egy FileName oszlop, ami csak maga a fájlnév rész, és egy LatModified oszlop a fájl dátumával.
    egy adott tétel pdf-jének a fájlneve elvileg 'rajzszám'+'revízió'+'.pdf' mintával generálható és lekérdezhető a táblából, hogy hol van a fájl.
    több ugyanolyan nevű fájl is van (sajnos), különböző elérési utakon. ezekből úgy szoktam lekérdezni, hogy LastModified szerint csökkenő sorrendbe rendezve, és a legelső találat akkor a legújabb verziója a fájlnak.
    SELECT RelativePath, FileName, LastModified FROM pdflist WHERE FileName = 'valamiizébigyó.pdf' ORDER BY LastModified DESC LIMIT 0,1;

    ezt kéne valahogy join-nal beintegrálni a nagy bonyolult lekérdezésbe. ezt így próbáltam:
    LEFT JOIN (SELECT FileName, CONCAT(RelativePath, '\\', FileName) AS hely FROM `pdflist` ORDER BY LastModified DESC) pdf ON pdf.FileName = CONCAT(t.rajzszam, t.revizio, '.pdf')

    ezzel az a baj, hogy így visszaadja az összes találatot, ha több ugyanolyan fájlnév is van, nem tudom hogy lehetne itt is megoldani, hogy csak egy találatot adjon vissza fájnevenként. a LIMIT nem jó. próbáltam GROUP BY FileName is...
    a másik probléma hogy ez így tetű lassú. :)

  • bsh

    addikt

    válasz instantwater #2166 üzenetére

    egy szállítólevél több több rendeléshez is tartozhat, mivel egy megrendelés kb. mindig több tételből áll (azaz több sor a táblában). ezeket ahogy egy nagyobb részmennyiség kész van és kiszállítható, csomagolják és egy fuvarlevéllel szállítják ki, de sokszor van olyan, hogy tételekre várni kell, ezért ezeket később egy másik fuvarlevéllel szállítják ki, és olyan is van, hogy mondjuk egy vagy több tételből csak X mennyiség van raktáron, ezeket kiszállítják, a maradékot meg később, amikro a hiányzó mennyiség beérkezik, akkor újabb szállítóval szállítják ki.
    magyarán: egy szállítólevéhez több tétel is tartozhat (ez nem probléma), és egy tételhez tartozhat több szállítólevél is (jelen esetben max. 3)
    próbáltam még olyat is, hogy:
    ... LEFT JOIN `szallitolevelek` sz ON m.Kisz1_flev = sz.id OR m.Kisz2_flev = sz.id OR m.Kisz3_flev = sz.id
    de az úgy nemjó. :(
    végülis működik a dolog, csak nem tudom, lehet-e "szebben".

  • bsh

    addikt

    válasz instantwater #2164 üzenetére

    SELECT (...) m.Kisz1_menny, m.Kisz1_datum, sz1.szam as Kisz1_flev, sz1.hely as Kisz1_hely, m.Kisz1_szla, m.Kisz2_menny, m.Kisz2_datum, sz2.szam as Kisz2_flev, sz2.hely as Kisz2_hely, m.Kisz2_szla, m.Kisz3_menny, m.Kisz3_datum, sz3.szam as Kisz3_flev, sz3.hely as Kisz3_hely, m.Kisz3_szla FROM `megrendelesek` m LEFT JOIN `szallitolevelek` sz1 ON m.Kisz1_flev = sz1.id LEFT JOIN `szallitolevelek` sz2 ON m.Kisz2_flev = sz2.id LEFT JOIN `szallitolevelek` sz3 ON m.Kisz3_flev = sz3.id WHERE m.id > 0;
    ez csak a kérdéses rész, a többit kitöröltem.

  • bsh

    addikt

    sziasztok.
    lenne egy problémám, amit ugyan megoldottam, de nem biztos, hogy ez a jó/legjobb megoldás. ebben kérnék segítséget.
    van egy tábla, amolyan megrendelés-áttekintő-összefoglaló akármi, aminek a lekérdezésekor több másik táblából jönnek product id-k, számlák, stb, több join is van. a probléma az ,hogy a megrendeléske kiszállításáról szállítólevelek is egy táblából jönnek. viszont előfordulhat olyan, hogy egy megrendelést több részletben szállítanak ki, ekkor több szállítólevél is tartozhat egy megrendeléshez. ezért minden megrendelés sorhoz 3 oszlop van, 3 lehetséges rész-kiszállítási szállítólevéllel. de ezek mind ugyanabból a táblából jönnek.
    ezt úgy tudtam megoldani, hogy a lekérdezésben a szállítóleveles tábla háromszor is join-elve van, mindig az id oszlop, de 3 külön néven.
    erre van esetleg más egyszerűbb megoldás? vagy ez így normális?

Új hozzászólás Aktív témák

Hirdetés