Lūdzu palīdzību SQL valodā

Sākumlapa Forumi Software Cita programmatūra Lūdzu palīdzību SQL valodā

Tiek skatīts 1 ieraksts (no 47 kopumā)
  • Autors
    Ieraksti
  • #150009
    ob1
    Participant

    Uzdevums tāds – ir divas tabulas, viena satur preču nosaukumus, otra – cenas, bet ar laiku, kad cena stājusies spēkā. Vajag uztaisīt selektu, kas atgriež preču cenu uz šodienu. Skat attēlu:

    [img]https://notepad.lv/userpix/1679_sql_task1_1.png[/img]

    Vai to var izdarīt ar SELECT? Kā?

    #218093
    Andress
    Participant

    SELECT `price` FROM `Price` WHERE `id`=’$id’ ORDER BY `when` DESC LIMIT 1;

    Kkā tā laikam… 🙂 Ja vien tur nav cenas nākotnei… Ja ir cenas nākotnei, japadomā vēl

    #218094
    ob1
    Participant

    Andress, tas nestrādās. Kaut vai tāpēc, ka nav nevienas pārbaudes uz laiku.

    #218095
    Andress
    Participant

    SELECT `price` FROM `Price` WHERE `id`=’$id’ AND `when`< ='date("d.m:Y H:i")' ORDER BY `when` DESC LIMIT 1; Paņems lielāko vērtību kas nav nākotnei 😉 Edited > —-> <

    #218096
    ob1
    Participant

    nē taču.

    when`>=’date(“d.m:Y H:i”) <-- tas neko neatrisina.

    #218097
    Andress
    Participant

    Tas izdara tieši to ko tu prasiji – paņem cenu kura ir uz šodienu VAI pēdējā norādītā! Protams, date() funkcijas vietā var izmantot jebkuru no attiecīgās valodas, dižais programmeistars taču tur problēmās neiestigs. 🙂 Jeb varbūt tev vajag paķert kautko no zila gaisa un es idiots būdams sertificēts sql operators nespēju saprast tavu domu? 🙂

    #218098
    sLIDe
    Participant

    Andress, nevis `when`>=’date(“d.m:Y H:i”)’, bet `when`<='date("d.m:Y H:i")', jo savādāk ņems arī nākotnes laikus.

    #218099
    Andress
    Participant

    sLIDe wrote:

    Andress, nevis `when`>=’date(“d.m:Y H:i”)’, bet `when`<='date("d.m:Y H:i")', jo savādāk ņems arī nākotnes laikus.

    Stfu, paldies, typo :))))

    #218100
    ob1
    Participant

    Pag, veči, uzdevumā ir prasīts atgriezt 3 laukus – id, name un price. Nu labi, var būt arī papildus lauki, bet vismaz tie 3.

    #218101
    usver
    Participant

    Code:

    select goods.id, name, price FROM goods
    LEFT JOIN Price ON goods.id = Price.id_good
    where `when` IN ( select max(`when`) FROM Price where id_good = goods.id )
    group by goods.id
    order by `when` desc

    protams, paredzu, ka būs ķērcieni no visvarenā MEISTARA, “koi hren tur from vajag, tur taču var pāris baitus ietaupīt ..” utt 😉 😉

    #218102
    Andress
    Participant

    ob1 wrote:

    Pag, veči, uzdevumā ir prasīts atgriezt 3 laukus – id, name un price. Nu labi, var būt arī papildus lauki, bet vismaz tie 3.

    Tam ir nepieciešoms izmantot server side vai program side kodu. SQL ir datu bāzes serveris ne apstrādes…

    #218103
    usver
    Participant

    btw, WHEN sql`os mēdz būt rezervētais vārds, tāpēc to vaig pārsaukt savādāk, kamēr vēl top. bet atkal – ko es, lohs, te mācu ūbervečus, kas laikam SQL`u dzen uz paštaisītas DBVS..

    #218104
    rATRIJS
    Participant

    Code:


    SELECT Goods.id, Goods.name, Price.price FROM Price INNER JOIN Goods ON Price.id_good = Goods.id WHERE Goods.id=’$id’ AND Price.when< ='date("d.m:Y H:i")' ORDER BY Price.when DESC LIMIT 1;

    P.S. izdomā pats kuru id tev vajag – pieņemu, ka no Goods tabulas.

    EDIT:

    btw Andress kods nestrādās, jo ja jau ir zināms id, tad kāda jēga kaut ko vēl sīkāk atlasīt? Domāju, ka domāts ir Goods id

    usver: labāk ir izmantot INNER JOIN, jo diez vai būs gadījums, ka cenai nav konkrētā prece 🙂

    #218105
    ob1
    Participant

    Vai kāds var uzrakstīt SELECt operatoru ar visu JOIN, kas atgrieztu aprakstā minēto tabulu?

    P.S. Un ļoti mīļi lūdzu – nespamojiet bez jēgas, ja ir SELECT, tad rakstiet. Please 🙂

    #218106
    Andress
    Participant

    usver wrote:

    btw, WHEN sql`os mēdz būt rezervētais vārds, tāpēc to vaig pārsaukt savādāk, kamēr vēl top. bet atkal – ko es, l**s, te mācu ūbervečus, kas laikam SQL`u dzen uz paštaisītas DBVS..

    Jā tiešam lohs, kam“““““““““““domāts? 😀 No offense, par to lohu jokoju 😀

    Bet apr tiem jūsu selectiem, pieņemsim ka jazivada 20 preces 10 000 apmekletajiem + botiem menesī. Uz shared hosta tāds query ir nepieļaujams, kur nu vel nevēlams.

    Ob1 lūdzams, izmanto to ko tev piedāvā un beidz di*** un uzraksti server side kodu 🙂 gan jau tev tas preces id jau ir paņemts, kas liedz reize ar id paņemt nosaukumu? :> Dibenu plēš? Vo pafleimošu tagad…

    #218107
    usver
    Participant

    Es nesaprotu, ar ko ob1 par liesu mans kods? Ideāli nostrādā uz mysql, atgriež visu, ko vajag. Tur par servera pusē neko nevajag – viss tiek nolasīts ar SQL palīdzību.

    Varenais meistars laikam nav ar mieru atzīt, ka kāds ir spējis 2min laikā uzrakstīt pieprasijumu, priekš kā pašam padoms par īsu. 😀

    rATRIJS: a šitais ar domu, lai uzreiz redzētu, kurām precēm vispār nav cenu. INNER JOIN tiešām vajag, bet pēc tam, kad pirmā testēšanās jau notikusi un db savesta kārtībā.

    #218108
    rATRIJS
    Participant

    pag pag Andress – gribi teikt, ka kvērijos nevar izmantot JOIN’us, jo tas ir lēni? 😀 😀 😀

    un rezervētos vārdus tiešām nav vēlams izmantot, jo tas palielina varbūtību uz visādiem bugiem (ar visām pēdiņām)

    un jā – manā augstāk redzamajā postā ir ar visu join’u

    #218109
    Andress
    Participant

    rATRIJS wrote:

    pag pag Andress – gribi teikt, ka kvērijos nevar izmantot JOIN’us, jo tas ir lēni? 😀 😀 😀

    un rezervētos vārdus tiešām nav vēlams izmantot, jo tas palielina varbūtību uz visādiem bugiem (ar visām pēdiņām)

    un jā – manā augstāk redzamajā postā ir ar visu join’u

    Tu esi strādājis ar katalogu svarā ap 500Mb min.? 😀 Uz milzigiem apjomiem kā tas parasti ir tirdzniecībā, join tiešām iesper sql servam :> pie tam ievērojami vairāk kā aj tiktu izmantots server-side, bet nu protams lai jau ziamnto, šaubos vai viņam tur būs hoty 500 ieraksti. Anyway, s rezervētos neizmantoju, lai jau šams lieto, va ta mums ar tevi- gabals atkritīs? 😀 😀

    /me butiba lielako vairumu slodzes novac no glabašanas serveriem, tam domati operaciju serveri- apstrādei. Jo katra lieka komunikācija starp instancēm palielina izpildes laiku./ mission critical programming saucas. un atkal ne par ob1 webshopu 😀 😀

    #218110
    ob1
    Participant

    usver, paldies. Domāju, ka tavs kods tiešām strādās… bet uz katru preci ir jātaisa subselect, ja preču ir daudz, tad tas select totāli bremzēs, man tā šķiet. Vai arī es kļūdos?

    P.S. Patiesībā jau stāsts nav par precēm un cenām, bet par pacientiem un analīžu rezultātiem. Bet struktūras tās pašas.

    #218111
    Andress
    Participant

    Š eit tu nekļūdies. Urā! [img]https://bildites.lv/images/gkjru7pxz8k4fupuukq.gif[/img]

Tiek skatīts 1 ieraksts (no 47 kopumā)
  • Jums ir jāpieslēdzas sistēmai, lai varētu komentēt šo tēmu.
Jaunākais portālā