17. oktober 2021 - 08:35Der 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
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.
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?
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
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.