Výsledky 1 až 9 z 9

Téma: MySQL join 2 tabuliek s podmienkami = a >= za vysledku pre kazdy riadok z 1 TAB

Threaded View

Předcházející příspěvek Předcházející příspěvek   Další příspěvek Další příspěvek
  1. #1
    Terorista karabínový mince Avatar uživatele PiT
    Založen
    13.09.2002
    Bydliště
    Bratislava
    Příspěvky
    4 550
    Vliv
    300

    Standardní MySQL join 2 tabuliek s podmienkami = a >= za vysledku pre kazdy riadok z 1 TAB

    Zdravim vospolok.

    Pri robeni jednej webovej aplikacie som narazil na zdanlivo velmi jednoduchy problem, ktory som sice vyriesil (nemam to este natestovane, takze neviem, ci je to 100%ne funkcne riesenie), no neviem si s nim celkovo nejako elegantne/jednoznacne rady.

    Majme

    Tabulka A: id; datum; id2
    1; 2009-12-17 10:12:00; 3
    2; 2010-01-13 12:14:00; 14
    3; 2009-01-13 14:02:44; 3
    4; 2009-07-05 12:00:00; 20
    5; 2009-07-05 12:00:00; 12
    6; 2009-08-01 14:00:00; 20

    Tabulka B: id, datum; id2; hodnota
    1; 2008-10-01; 3; 3000
    2; 2009-01-01; 3; 800
    3; 2009-07-13; 3; 500
    4; 2009-07-26; 3; 300
    9; 2008-04-01; 12; 7500
    10; 2008-10-21; 14; 5000
    20; 2009-07-01; 20; 500
    21; 2009-07-26; 20; 300

    Potrebujem spravit JOIN Tab B na Tab A s tym, ze vysledok bude relevantna hodnota pre dany datum.
    V JOINe teda operujem s A.id=B.id AND SUBSTRING(A.datum,1,10)>=B.datum

    Tzn vysledok by mal vyzerat takto dajako:
    A.id; A.datum; B.datum; A/B.id2; B.hodnota
    1; 2009-12-17 10:12:00; 2009-07-26; 3; 300
    2; 2010-01-13 12:14:00; 2008-10-21; 14; 5000
    3; 2009-01-13 14:02:44; 2009-01-01; 3; 800
    4; 2009-07-05 12:00:00; 2009-07-01; 20; 500
    5; 2009-07-05 12:00:00; 2008-04-01; 12; 7500
    6; 2009-08-01 14:00:00; 2009-07-26; 20; 300

    Haluz je prave ta druha podmienka, s ktorou operujem => A.datum>=B.datum (resp. SUBSTRING(A.datum,1,10)>=B.datum, lebo A.datum je datetime, B.datum je date, ale to je irelevantne)
    pretoze logicky ak mam v Tab B starsie hodnoty pre jedno ID2, tak pre nu vyhovuje viac riadkov. Ja potrebujem vzdy posledny zadany (tzn. s poslednym datumom).

    Nejaky napad ako to elegantne vyriesit? LIMIT 1 pouzit neviem, ci mozem, sam som to vyriesil s vnorenymi join selectami, kde som to najprv ORDERol, potom GROUPol ale GROUP pouzivam tentokrat velmi nerad, lebo GROUPujem podla A.id a spolieham na to, ze zachova vzdy prvu B.hodnota
    Naposledy upravil PiT; 14.01.2010 v 10:36.
    And down we go again, under the relentless wawes, into the arms of calm breakers, into bayou of forgotten dreams
    Like sand slipping through my fingers, nothing ever lasts, ever will

Informace o tématu

Users Browsing this Thread

Toto téma si právě prohlíží 1 uživatelů. (0 registrovaných a 1 anonymních)

Pravidla přispívání

  • Nemůžete zakládat nová témata
  • Nemůžete zasílat odpovědi
  • Nemůžete přikládat přílohy
  • Nemůžete upravovat své příspěvky
  •