Identieke tabellen joinen
Hallo iedereen,
lange tijd geleden ondertussen :)
Zoals iedereen heb ik een probleem, ik probeer het even uit te leggen. Van alle atleten in onze sportclub heb ik de prestaties van afgelopen jaar in een database gestoken. Ook de prestaties van vorig jaar steken in dezelfde database, maar wel in een andere tabel...
Nu ik zou graag een overzicht maken van alle prestaties, dus ook deze van vorig jaar... Ik probeerde onderstaande code, maar dan krijg ik 2x de tabelrij 'Resultaat' te zien (wat niet de bedoeling is natuurlijk)..
Ik maak eerst nog een selectie uit mijn atletendatabase (atleten), via de Lifenr/Atleet_id JOIN ik de resultatentabbel van dit jaar (resultaten_2013) en van vorig jaar (resultaten_2012)
SELECT `atleten`.`Voornaam` , `atleten`.`Achternaam` , 'Kogel',
`resultaten_2013`.`Resultaat` ,
`resultaten_2012`.`Resultaat`
FROM `atleten`
// Joinen resultaten 2013
RIGHT JOIN `resultaten_2013` ON `atleten`.Lifenr = `resultaten_2013`.`Atleet_id`
// Joinen resultaten 2012
RIGHT JOIN `resultaten_2012` ON `atleten`.Lifenr = `resultaten_2012`.`Atleet_id`
Op google en aanverwanten vondt ik geen oplossing, weten jullie iets?
Alvast bedankt!
lange tijd geleden ondertussen :)
Zoals iedereen heb ik een probleem, ik probeer het even uit te leggen. Van alle atleten in onze sportclub heb ik de prestaties van afgelopen jaar in een database gestoken. Ook de prestaties van vorig jaar steken in dezelfde database, maar wel in een andere tabel...
Nu ik zou graag een overzicht maken van alle prestaties, dus ook deze van vorig jaar... Ik probeerde onderstaande code, maar dan krijg ik 2x de tabelrij 'Resultaat' te zien (wat niet de bedoeling is natuurlijk)..
Ik maak eerst nog een selectie uit mijn atletendatabase (atleten), via de Lifenr/Atleet_id JOIN ik de resultatentabbel van dit jaar (resultaten_2013) en van vorig jaar (resultaten_2012)
SELECT `atleten`.`Voornaam` , `atleten`.`Achternaam` , 'Kogel',
`resultaten_2013`.`Resultaat` ,
`resultaten_2012`.`Resultaat`
FROM `atleten`
// Joinen resultaten 2013
RIGHT JOIN `resultaten_2013` ON `atleten`.Lifenr = `resultaten_2013`.`Atleet_id`
// Joinen resultaten 2012
RIGHT JOIN `resultaten_2012` ON `atleten`.Lifenr = `resultaten_2012`.`Atleet_id`
Op google en aanverwanten vondt ik geen oplossing, weten jullie iets?
Alvast bedankt!
Is het handig om voor elk jaar een tabel aan te maken?
Heb je straks 10 tabellen (en moet je elk jaar de query aanpassen).
Heb je straks 10 tabellen (en moet je elk jaar de query aanpassen).
Ik denk het wel, want hoe ga ik anders bepalen in welk jaar welke prestatie is neergezet?
Query aanpassen is niet veel werk, dus met plezier :-)
Query aanpassen is niet veel werk, dus met plezier :-)
In je tabel een jaartal (/datum) opnemen.
Moet je eenmalig je tabel aanpassen en de query waarmee de gegevens worden weggeschreven in de tabel.
Moet je eenmalig je tabel aanpassen en de query waarmee de gegevens worden weggeschreven in de tabel.
Stap inderdaad af van tabellen per jaar. Dat geeft alleen maar problemen. Bedenk bijvoorbeeld eens hoe je gaat zoeken in een variabel aantal tabellen?
Het zou overigens wel met een UNION subquery kunnen, maar dan blijven de eerder genoemde punten nog steeds van toepassing. Daarnaast is het een fluitje van een cent om die twee tabellen één te maken:
Om helemaal netjes te zijn:
Btw, je weet wat de RIGHT JOIN doet?
Die selecteert wel alle resultaten maar niet alle atleten, ik denk dat je hier een left join bedoelt.
Code (php)
1
2
2
INSERT INTO resultaten_2012 (voornaam, achternaam, resultaat)
SELECT voornaam, achternaam, resultaat FROM resultaten_2013
SELECT voornaam, achternaam, resultaat FROM resultaten_2013
Om helemaal netjes te zijn:
Btw, je weet wat de RIGHT JOIN doet?
Die selecteert wel alle resultaten maar niet alle atleten, ik denk dat je hier een left join bedoelt.




