Ik wil zowel de value als de link van de afbeelding hebben.
Maar beide tabellen hebben iets van deze informatie.
Als ik een query voor Skateboard dan kan ik met een JOIN de value ophalen, maar hoe refereer ik weer terug van tabel 2 naar 1 voor afbeeldingsurl?
Ik wil dus de value rood hebben en skateboard-100x100.png.
De value 345 in tabel 2 is de ID in tabel 1 van de URL
Wordpress ziet een afbeelding/bijlage als een post en die worden dan in de wp_posts opgeslagen met een eigen ID nummer.
De wp_metapost bevat de de informatie zoals prijs, voorraad maar heeft ook in de ID van de afbeelding hierin staan die weer refereert aan de wp_posts tabel.
Beide hebben dus informatie die ik dus van 2 kanten moet laten werken.
Misschien is onderstaand tabellen overzicht duidelijker
Op basis van eerdere voorbeeld, een query waarbij je maar 1 keer hoeft te zoeken.
SELECT
(SELECT t1.id FROM tabel1 t1
WHERE t1.id = 250) AS id,
(SELECT t1.naam FROM tabel1 t1
WHERE t1.id = 250) AS naam,
(SELECT t2.value FROM tabel2 t2
JOIN tabel1 t1
ON t1.id = t2.postid
WHERE t2.value REGEXP '^[^0-9]+$' AND t1.id = 250 ) AS kleur,
(SELECT t1.naam FROM tabel1 t1
JOIN tabel2 t2
ON t1.id = t2.value
WHERE t2.value REGEXP '^[0-9]+$' ) AS afbeelding;
Hoe dan ook, wanneer je behoorlijk wat moeite moet doen om de informatie waarin jij geinteresseerd bent uit de database te kunnen peuteren, zou je kunnen stellen dat de manier van opslaan ongeschikt is voor dat doel.
Los hiervan, je werkt met een pakket. Het is handig om meteen te vermelden dat je van WordPress gebruik maakt, zodat de rest van de wereld dit ook direct weet.
Dit pakket heeft heel veel functionaliteit. Ik heb 5 minuten geGoogled, en blijkbaar bestaat er een standaard WordPress functie die dit mogelijk snel voor jou kan oplossen.
Wellicht is de syntax in 10 jaar wat veranderd, maar je zou de volgende aanroep eens kunnen proberen.
Het lijkt mij een goede gewoonte om, voordat je een pakket probeert te hacken, te kijken of datgene wat jij zoekt toevallig out-of-the-box beschikbaar is.
kan nog steeds in 1 query (mits er precies 1 afbeelding en 1 kleur is)
SELECT t1.guid as naam, t2.meta_value AS prijs, t1F.guid AS foto
FROM tabel1 t1
JOIN tabel2 t2 on t2.postid = t1.id AND meta_key = 'price'
JOIN tabel2 t2F on t2F.postid = t1.id AND t2F.meta_key = 'image'
JOIN tabel1 t1F on t1F.id = t2F.value
WHERE tabel1.id = 45
[size=xsmall]Toevoeging op 20/05/2020 08:48:09:[/size]
ik zie in de tabel geen kleur, dus ik heb er maar prijs van gemaakt.
edit: meta_value moest een paar keer meta_key zijn.
Als je zowel de meta_value welke in de table wp_postmeta staan als de afbeelding die aan deze post is gekoppeld.
Kun je 2 queries maken.
Je krijg tenslotte de thumb id van de tabel wp_postmeta die je in een variabel kan opslaan.
Maar om de meta_value te krijgen heb je eerst de tabel wp_posts nodig.