Miten MySQL:ssa tehdään molempipuolinen liitos?
Taulu A (id, arvo)
1 A
2 B
3 C
Taulu B (id, arvo)
2 X
3 Y
4 Z
Lopputulos (id, A, B)
1 A, NULL
2 B, X
3 C,Y
4 NULL, Z
Molempipuolinen liitos
2
749
Vastaukset
- ...
select * from Taulu A full join Taulu B
using id- I.Proqatlis
Oikea vastaus on, ettei sitä tänä päivänä tehdä mitenkään, siis suoraan. Kiertotie toki on olemassa, ja se on seuraava:
SELECT a.id, a.arvo, b.arvo
FROM a_taulu a LEFT JOIN b_taulu b ON a.id = b.id
UNION
SELECT b.id, a.arvo, b.arvo
FROM a_taulu a RIGHT JOIN b_taulu b ON a.id = b.id;
Ensimmäinen SELECT siis hakee a_taulu:sta kaikki rivit ja yhdistää kunkin rivin mahdolliseen b_taulu:ssa olevaan riviin id:n perusteella.
Toinen SELECT hakee b_taulu:sta kaikki rivit ja yhdistää kunkin rivin mahdolliseen a_taulu:ssa olevaan riviin.
Nämä kaksi kyselytulosta yhdistetään UNIONilla ja kaksoiskappaleet poistuvat, koska tässä ei ole määritystä UNION ALL.
Lisää aiheesta:
http://dev.mysql.com/doc/refman/5.0/en/join.html
Tuossa ylläolevassa paikassa kaksi viimeistä viestiä liittyvät aiheeseen.
Tässä alla taas on juttua, kuinka full join on Oracle-tietokannassa olemassa versiosta 9i alkaen. MySQL:ssä sitä ei ole vielä lainkaan. Mutta tietokannat kehittyvät, ja kiertotie kuitenkin löytyy.
http://www.oreillynet.com/pub/a/network/2002/04/23/fulljoin.html
Ketjusta on poistettu 0 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
- 74904
Miltä se tuntuu
Miltä se tuntuu havahtua, että on ollut ihmistä kohtaan, joka on rakastanut ja varjellut, täysi m*lkku? Vai havahtuuko s104768- 60752
- 43704
- 49654
- 45653
- 31629
Mitä se olisi
Jos sinä mies saisit sanoa kaivatullesi mitä vain juuri nyt. Ilman mitään seuraamuksia yms. Niin mitä sanoisit?34577- 50570
- 38516