Táblák összekapcsolása MySQL-ben

Táblák összekapcsolása MySQL-ben
2012-04-13T19:53:43+02:00
2012-04-13T21:19:47+02:00
2022-11-25T09:10:40+01:00
sanyi_88
Kedves mindenki!
Olyan problémám lenne, hogy adott két tábla, melyekben 3 közös mező is van. Ezen két táblát szeretném egy helyen megjeleníteni egyetlen közös mező, a dátum alapján rendezve.
Hogy érthetőbb legyen, leírom a két táblát:
Tabla1
------------------------------------------------ id | kikuld | json | datum ------------------------------------------------ 1 | 24 | {valami:1} | 2012:04:10 10:23:03 2 | 2 | {valami:2} | 2012:04:10 10:27:45 3 | 16 | {valami:3} | 2012:04:10 11:02:00

Tabla2
------------------------------------------------ id | kikuld | uzenet | datum ------------------------------------------------ 2 | 46 | abcde12345 | 2012:04:10 09:27:55 5 | 67 | valami_abc | 2012:04:10 10:27:45 14 | 16 | semmi_1234 | 2012:04:10 13:13:58

Ebből a két táblából azt szeretném, ha így kapnám meg az adatokat:
------------------------------------------------------------- id | kikuld | json | uzenet | datum ------------------------------------------------------------- 2 | 46 | null | abcde12345 | 2012:04:10 09:27:55 1 | 24 | {valami:1} | null | 2012:04:10 10:23:03 2 | 2 | {valami:2} | null | 2012:04:10 10:27:45 5 | 67 | null | valami_abc | 2012:04:10 10:27:45 3 | 16 | {valami:3} | null | 2012:04:10 11:02:00 14 | 16 | null | semmi_1234 | 2012:04:10 13:13:58

a lényeg, hogy ha ugyan azt a dátumot megtalálja kétszer is akár, akkor ne "gyúrja össze" a két sort, hanem két külön sor legyenbelőle.
Végig próbálkoztam már, de sehogy sem sikerült így lekérni az adatokat. Azt tudtam csak megcsinálni, hogy a két középső sort egyben írta ki, így:
2 | 2 | {valami:2} | valami_abc | 2012:04:10 10:27:45
Egyáltalán lehetséges ezt megoldani egy lekérdezésből valami gyors módszerrel? Mind a két tábla több ezer rekordot is tartalmazhat (eddig LIMIT-el korlátoztam, hogy maximum 50 rekordot kérdezzen le).

Előre is köszönöm a segítséget, Sanyi!
Mutasd a teljes hozzászólást!
union -t próbáltad már?
Mutasd a teljes hozzászólást!

  • Most próbáltam ki, aztán azt akartam írni (most töröltem ki), hogy nem jó, mert nem tudom beazonosítani, hogy melyik táblából jött az adat. Amikor szimplán UNION-al összekapcsoltam a két tábla lekérését, akkor vagy az uzenet, vagy a json mező elveszett. Aztán rájöttem, hogy csak fel kell vennem egy statikus szöveget, amibe beleírom, honnan jött a rekord, így:
    SELECT id, kikuld, json AS tartalom, 'Tabla1' AS honnan, datum FROM Tabla1 UNION SELECT id, kikuld, uzenet AS tartalom, 'Tabla2' AS honnan, datum FROM Tabla2 ORDER BY datum LIMIT 0, 50;

    Az érdekesség az, hogy egyszer már próbáltam union-t, de akkor valami hibát írt rá, hogy nézzem a doksiban a helyes színtaxist... Amúgy jogos, hogy UNION a megoldás, de mivel elsre nem jött be, mentem is tovább! Nem az lett a legvége, ahogy gondoltam, hogy kéne lennie, de ez ugyan az, mert tudom azonosítani, hogy melyik tábla rekordjáról van szó.
    Köszönöm szépen djjjozsi!
    Mutasd a teljes hozzászólást!
  • ha nem ment voln,a és beírod akkor segítettem volna.
    amúgy ez a legjobb amikor kérdés esetén a kérdező egy apró segítés után kutakodva rálel a megoldásra.
    Mutasd a teljes hozzászólást!
  • Amúgy sokszor van ilyen, csak most sok helyen néztem utána és sehol nem találtam meg ezt az eredményt, ezért kértem tőlem okosabbaktól segítséget.
    Nem vallom magam kezdőnek, de igazából UNION-t most használok először

    Szerk.:
    Most már csak a users tábla join-jait rakom bele és készen vagyok a lekérdezéssel, plusz kódátírás... Reggel új kezdetre ébred az adatbázis!
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd