Scholieren.com forum

Scholieren.com forum (https://forum.scholieren.com/index.php)
-   Software & Hardware (https://forum.scholieren.com/forumdisplay.php?f=20)
-   -   [SQL] Semi-complex query-probleem (https://forum.scholieren.com/showthread.php?t=1103310)

Ulfheðin 14-02-2005 15:34

[SQL] Semi-complex query-probleem
 
Waar ik heen wil valt niet binnen mijn huidige kennis, en ik heb het een en ander gepoogd er over te zoeken, zonder succes, dus schreef en schetste ik mijn doeleind een beetje uit, voor het geval iemand anders mij een richting of oplossing geven kan:

Code:

Ik heb een ruwe tabel.

        Schets:
       
        tabel_ruw:
        | id | waarde_01 | waarde_02 | waarde_03 |
        ------------------------------------------
        | 1  | waarde 1  | waarde 2  | waarde 3  |
        | 2  | waarde 1  | waarde 2  | waarde 3  |

De drie waardes komen overeen met waardes in drie hulp-tabellen

        Schets 1:
       
        hulptabel_waarde01:
        | id | vertaalde_waarde | te_vertalen waarde |
        ----------------------------------------------
        | 1  | gannef1          | waarde 1          |
        | 2  | gannef123        | waarde 123        |

        Schets 2:

        hulptabel_waarde02:
        | id | vertaalde_waarde | te_vertalen waarde |
        ----------------------------------------------
        | 1  | gannef_2_1      | waarde2            |


        hulptabel_waarde03:
        | id | vertaalde_waarde | te_vertalen waarde |
        ----------------------------------------------
        | 1  | gannef_3_1      | waarde3            |

De id's uit die 3 tabellen komen overeen met waardes in de definitieve tabel

        Schets:
       
        Definitieve_tabel:
        | id | waarde1_id | waarde2_id | waarde3_id |
        ---------------------------------------------
        | 1  | 1          | 2          | 1          |
        | 2  | etc        | etc        | etc        |

Uiteindelijk wil ik met 1 query de waarde uit Definitieve_tabel.id aan de hand van de gegevens in tabel_ruw

Iemand?

Manuzhai 14-02-2005 17:44

SELECT dt.id
FROM definitieve_tabel dt, ruwe_tabel rt, hulp_tabel_1 ht1, hulp_tabel_2 ht2, hulp_tabel_3 ht3
WHERE ht1.te_vertalen_waarde = rt.waarde_1 AND
ht2.te_vertalen_waarde = rt.waarde_2 AND
ht3.te_vertalen_waarde = rt.waarde_3 AND
dt.waarde_1 = ht1.vertaalde_waarde AND
dt.waarde_2 = ht2.vertaalde_waarde AND
dt.waarde_3 = ht3.vertaalde_waarde

Zoiets? Het generaliseert niet echt netjes naar de case met n waarden, maar dan moet je je tabellen anders designen, denk ik.

Ulfheðin 15-02-2005 08:20

Citaat:

Manuzhai schreef op 14-02-2005 @ 18:44 :
SELECT dt.id
FROM definitieve_tabel dt, ruwe_tabel rt, hulp_tabel_1 ht1, hulp_tabel_2 ht2, hulp_tabel_3 ht3
WHERE ht1.te_vertalen_waarde = rt.waarde_1 AND
ht2.te_vertalen_waarde = rt.waarde_2 AND
ht3.te_vertalen_waarde = rt.waarde_3 AND
dt.waarde_1 = ht1.vertaalde_waarde AND
dt.waarde_2 = ht2.vertaalde_waarde AND
dt.waarde_3 = ht3.vertaalde_waarde

Zoiets? Het generaliseert niet echt netjes naar de case met n waarden, maar dan moet je je tabellen anders designen, denk ik.

Het ziet er wel logisch uit, ik waag een poging. Maar wat bedoel je met generaliseren? Ik zit helaas vast aan het design van deze database.

Manuzhai 15-02-2005 08:41

Dat het maken van een dergelijke query steeds minder netjes wordt naarmate er meer waarden in de ruwe/definitieve tabel staan.

Anders gezegd: het is niet echt een elegante oplossing.

Ulfheðin 15-02-2005 09:15

Citaat:

Manuzhai schreef op 15-02-2005 @ 09:41 :
Dat het maken van een dergelijke query steeds minder netjes wordt naarmate er meer waarden in de ruwe/definitieve tabel staan.

Anders gezegd: het is niet echt een elegante oplossing.

Het gaat om het importeren van data, dus de site zelf draait niet op dat soort queries. Ik hou ook niet van dit soort Spartaanse oplossingen, maar liever alles in 1 query dan kutten met 3 verschillende queries en php-matige switch/case constructies.

Ulfheðin 15-02-2005 09:50

Hij werkt perfect trouwens :)

Manuzhai 15-02-2005 11:12

Oh, voor import mag dit soort dingen inderdaad best. :)


Alle tijden zijn GMT +1. Het is nu 08:31.

Powered by vBulletin® Version 3.8.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.