Avatar billede Morten Professor
17. oktober 2021 - 08:35 Der er 4 kommentarer og
1 løsning

Join flere keys og values

Hej
Håber er nogen der kan hjælpe mig med at løse noget min hovedpine :D
Jeg har svært ved at få dette til at virke

Den kommer med ingen fejl i phpmyadmin
Har prøvet med static værdier.
Kan godt finde noget på de statiske værdier, hvis jeg laver et rent kald som sådan her:

SELECT * FROM `nw_postmeta` WHERE post_id in (1362580, 1362581, 1362582, 1362583, 1362584, 1362585 )

Men dette her virker ikke og forstår det ikke.
Så håber på i måske kan hjælpe mig:

SELECT DISTINCT Posts.ID, PostMeta.post_id as PostMetaPostId, Posts.post_parent as PostParent_value,  Posts.post_type,

                hoejde.meta_key as hoejde, hoejde.meta_value as hoejde_value,
                tween_stoerrelse.meta_key as tween_stoerrelse, tween_stoerrelse.meta_value as tween_stoerrelse_value,
                    aar.meta_key as aar, aar.meta_value as aar_value,
                    voksen_stoerrelse.meta_key as voksen_stoerrelse, voksen_stoerrelse.meta_value as voksen_stoerrelse_value,
                    bukse_waist.meta_key as bukse_waist, bukse_waist.meta_value as bukse_waist_value,
                bukser_laengde.meta_key as bukser_laengde, bukser_laengde.meta_value as bukser_laengde_value,
                sko_stoerrelse.meta_key as sko_stoerrelse, sko_stoerrelse.meta_value as sko_stoerrelse_value,
                stroemper_str.meta_key as stroemper_str, stroemper_str.meta_value as stroemper_str_value,
                bh_stoerrelse.meta_key as bh_stoerrelse, bh_stoerrelse.meta_value as bh_stoerrelse_value,
                bh_skaal_stoerrelse.meta_key as bh_skaal_stoerrelse, bh_skaal_stoerrelse.meta_value as bh_skaal_stoerrelse_value,
                baelte_laengde.meta_key as baelte_laengde, baelte_laengde.meta_value as baelte_laengde_value,
                leverandoer_stoerrelse.meta_key as leverandoer_stoerrelse, leverandoer_stoerrelse.meta_value as leverandoer_stoerrelse_value


FROM nw_postmeta
INNER JOIN nw_posts as Posts ON post_id = Posts.ID
    LEFT JOIN nw_postmeta as PostMeta ON ID = PostMeta.post_id
    LEFT JOIN nw_postmeta as hoejde ON ID = hoejde.post_id
LEFT JOIN nw_postmeta as tween_stoerrelse ON ID = tween_stoerrelse.post_id
    LEFT JOIN nw_postmeta as aar ON ID = aar.post_id
    LEFT JOIN nw_postmeta as voksen_stoerrelse ON ID = voksen_stoerrelse.post_id
    LEFT JOIN nw_postmeta as bukse_waist ON ID = bukse_waist.post_id
    LEFT JOIN nw_postmeta as bukser_laengde ON ID = bukser_laengde.post_id
    LEFT JOIN nw_postmeta as sko_stoerrelse ON ID = sko_stoerrelse.post_id
    LEFT JOIN nw_postmeta as stroemper_str ON ID = stroemper_str.post_id
    LEFT JOIN nw_postmeta as bh_stoerrelse ON ID = bh_stoerrelse.post_id
    LEFT JOIN nw_postmeta as bh_skaal_stoerrelse ON ID = bh_skaal_stoerrelse.post_id
    LEFT JOIN nw_postmeta as baelte_laengde ON ID = baelte_laengde.post_id
    LEFT JOIN nw_postmeta as leverandoer_stoerrelse ON ID = leverandoer_stoerrelse.post_id




WHERE hoejde.meta_key = 'attribute_pa_hoejde' AND
      tween_stoerrelse.meta_key = 'attribute_pa_tween-stoerrelse' AND
      aar.meta_key = 'attribute_pa_aar' AND
voksen_stoerrelse.meta_key = 'attribute_pa_voksen-stoerrelse' AND
bukse_waist.meta_key = 'attribute_pa_bukse-waist' AND
bukser_laengde.meta_key = 'attribute_pa_bukser-laengde' AND
sko_stoerrelse.meta_key = 'attribute_pa_sko-stoerrelse' AND
stroemper_str.meta_key = 'attribute_pa_stroemper-str' AND
bh_stoerrelse.meta_key = 'attribute_pa_bh-stoerrelse' AND
bh_skaal_stoerrelse.meta_key = 'attribute_pa_bh-skaal-stoerrelse' AND
baelte_laengde.meta_key = 'attribute_pa_baelte-laengde' AND
leverandoer_stoerrelse.meta_key = 'attribute_pa_leverandoer-stoerrelse' AND


      PostMeta.post_id IN (1362580, 1362581, 1362582, 1362583, 1362584, 1362585) GROUP BY PostMeta.post_id

Har prøvet uden group by

Med venlig hilsen
Morten
Avatar billede Jens U. Juniormester
17. oktober 2021 - 10:06 #1
Verificér først at id-felterne på nw_posts.ID og nw_postmeta.post_id er eksakt samme datatype.

Uden indblik i dine data eller tabelstrukturer iøvrigt, ville jeg forsøge at udkommentere de mest restriktive dele af query'en én for en, og køre den indtil der begynder at dukke resultater op. Stavefejl i et attributnavne vil f.eks. kunne fanges på den måde.

Derudover vil det være relevante at køre noget a'la:

SELECT * FROM `nw_posts` WHERE ID in (1362580, 1362581, 1362582, 1362583, 1362584, 1362585)

..og sikre at du får samme antal resultater som i din første statiske query. Håber det kan hjælpe dig på vej.
Avatar billede Morten Professor
17. oktober 2021 - 10:25 #2
Hej Jens

Det vil jeg prøve, skal se om jeg kan finde fejlen, tak for dit svar
Avatar billede Morten Professor
17. oktober 2021 - 11:13 #3
Så tror jeg at jeg ved hvad der er galt. hvis value ikke er i tabellen når jeg henter disse
1362580, 1362581, 1362582, 1362583, 1362584, 1362585
Har står der de samme values og der virker det. så når jeg kalder på flere kan den ikke finde dem og så fejler den.

Ved ikke om det giver mening men har i en ide til hvad jeg kan gøre?
Avatar billede Morten Professor
17. oktober 2021 - 11:42 #4
Jeg prøvede at skift tom felt ud med NULL men ved ikke rigtig hvordan jeg ger prøvede dette:

SELECT DISTINCT Posts.ID, PostMeta.post_id as PostMetaPostId, Posts.post_parent as PostParent_value,  Posts.post_type,

              COALESCE(hoejde.meta_key, 'NULL') as hoejde, COALESCE(hoejde.meta_value, 'NULL') as hoejde_value,
                COALESCE(tween_stoerrelse.meta_key, 'NULL') as tween_stoerrelse, COALESCE(tween_stoerrelse.meta_value, 'NULL') as tween_stoerrelse_value,
                    COALESCE(aar.meta_key, 'NULL') as aar, COALESCE(hoejde.meta_key, 'NULL') as aar_value,
                    COALESCE(voksen_stoerrelse.meta_key, 'NULL') as voksen_stoerrelse, COALESCE(voksen_stoerrelse.meta_value, 'NULL') as voksen_stoerrelse_value,
                    COALESCE(bukse_waist.meta_key, 'NULL') as bukse_waist, COALESCE(bukse_waist.meta_value, 'NULL') as bukse_waist_value,
                COALESCE(bukser_laengde.meta_key, 'NULL') as bukser_laengde, COALESCE(bukser_laengde.meta_value, 'NULL') as bukser_laengde_value,
                COALESCE(sko_stoerrelse.meta_key, 'NULL') as sko_stoerrelse, COALESCE(sko_stoerrelse.meta_value, 'NULL') as sko_stoerrelse_value,
                COALESCE(stroemper_str.meta_key, 'NULL') as stroemper_str, COALESCE(
stroemper_str.meta_value, 'NULL') as stroemper_str_value,
                COALESCE(bh_stoerrelse.meta_key, 'NULL') as bh_stoerrelse, COALESCE(bh_stoerrelse.meta_value, 'NULL') as bh_stoerrelse_value,
                COALESCE(bh_skaal_stoerrelse.meta_key, 'NULL') as bh_skaal_stoerrelse, COALESCE(bh_skaal_stoerrelse.meta_value, 'NULL') as bh_skaal_stoerrelse_value,
                COALESCE(baelte_laengde.meta_key, 'NULL') as baelte_laengde, COALESCE(baelte_laengde.meta_value, 'NULL') as baelte_laengde_value,
                COALESCE(
leverandoer_stoerrelse.meta_key, 'NULL') as leverandoer_stoerrelse, COALESCE(leverandoer_stoerrelse.meta_value, 'NULL') as leverandoer_stoerrelse_value


FROM nw_postmeta
INNER JOIN nw_posts as Posts ON post_id = Posts.ID
    LEFT JOIN nw_postmeta as PostMeta ON ID = PostMeta.post_id
    LEFT JOIN nw_postmeta as hoejde ON ID = hoejde.post_id
LEFT JOIN nw_postmeta as tween_stoerrelse ON ID = tween_stoerrelse.post_id
    LEFT JOIN nw_postmeta as aar ON ID = aar.post_id
    LEFT JOIN nw_postmeta as voksen_stoerrelse ON ID = voksen_stoerrelse.post_id
    LEFT JOIN nw_postmeta as bukse_waist ON ID = bukse_waist.post_id
    LEFT JOIN nw_postmeta as bukser_laengde ON ID = bukser_laengde.post_id
    LEFT JOIN nw_postmeta as sko_stoerrelse ON ID = sko_stoerrelse.post_id
    LEFT JOIN nw_postmeta as stroemper_str ON ID = stroemper_str.post_id
    LEFT JOIN nw_postmeta as bh_stoerrelse ON ID = bh_stoerrelse.post_id
    LEFT JOIN nw_postmeta as bh_skaal_stoerrelse ON ID = bh_skaal_stoerrelse.post_id
    LEFT JOIN nw_postmeta as baelte_laengde ON ID = baelte_laengde.post_id
    LEFT JOIN nw_postmeta as leverandoer_stoerrelse ON ID = leverandoer_stoerrelse.post_id




WHERE hoejde.meta_key = 'attribute_pa_hoejde' AND
      tween_stoerrelse.meta_key = 'attribute_pa_tween-stoerrelse' AND
      aar.meta_key = 'attribute_pa_aar' AND
voksen_stoerrelse.meta_key = 'attribute_pa_voksen-stoerrelse' AND
bukse_waist.meta_key = 'attribute_pa_bukse-waist' AND
bukser_laengde.meta_key = 'attribute_pa_bukser-laengde' AND
sko_stoerrelse.meta_key = 'attribute_pa_sko-stoerrelse' AND
stroemper_str.meta_key = 'attribute_pa_stroemper-str' AND
bh_stoerrelse.meta_key = 'attribute_pa_bh-stoerrelse' AND
bh_skaal_stoerrelse.meta_key = 'attribute_pa_bh-skaal-stoerrelse' AND
baelte_laengde.meta_key = 'attribute_pa_baelte-laengde' AND
leverandoer_stoerrelse.meta_key = 'attribute_pa_leverandoer-stoerrelse' AND


      PostMeta.post_id IN (1362580, 1362581, 1362582, 1362583, 1362584, 1362585
) GROUP BY PostMeta.post_id
Avatar billede Morten Professor
18. oktober 2021 - 17:06 #5
Opgaven er løst
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester