Archief - SQL-query kolommen koppelen aan de hand van kolom waardes

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

xxReneexx

Legacy Member
Hallo allemaal,

Ik heb een vraag over een SQL-query. Ik probeer een kleine simpele plugin te maken voor wordpress. Maar het simple gaat voor mij niet op. Ik ben nog een beginneling en heb wat php en sql uitleg door genomen over het uitlezen van tabellen, en dacht bij me zelf dat moet lukken.. NOT Hopelijk wordt het geen ingewikkeld lang verhaal wat ik ga vertellen want ik weet nog niet zo goed hoe ik alles moet benoemen "volgens de vaktaal" en uitleggen.

Ik heb een tabel wp_users hier in staan namen met allemaal hun eigen id

Ik heb ook een tabel wp_usermeta hierin staan lidnummer, dieet etc.. Deze waardes staan allemaal in de kolom meta_key de waardes van lidnummer, dieet etc staan in de kolom meta_valeu.

ook in de tabel wp_usermeta is een kolom user_id die overeen komen met de id's van de gebruikers in tabel wp_users.

Nou mijn vraag:

Is het mogelijk te zoeken op b.v. lidnummer of dieet dat het zoek resultaat de namen van gebruikers zijn die in de tabel wp_users staan? De Id's komen wel overeen maar ik heb veel geprobeerd met de optie "join" maar dan kan ik wel tabellen koppelen maar geen kolommen en ook geen waardes van de meta_keys.

Een heel verhaal wat ik al dacht ik hoop dat iemand snap wat ik bedoel :)

Renee

dJeez

Legacy Member
Zoiets?
Code:
select u.id, u.name from wp_users u inner join wp_usermeta um on um.user_id = u.id where (um.meta_key = 'dieet' AND um.meta_value = 'suiker')
/
Code:
select u.id, u.name from wp_users u inner join wp_usermeta um on um.user_id = u.id where (um.meta_key = 'lidnummer' AND um.meta_value = '12345')

BTW Niet as-is gebruiken, dat is gewoon een gok op basis van wat je hierboven vertelt. Je zal wellicht wat kolomnamen moeten aanpassen.

xxReneexx

Legacy Member
Geweldig precies wat ik bedoel :)

Is het mogelijk dat je de regel van commentaar voorziet wat het precies doet. Ik zie een hoop wat nog onbekend is voor me. Waarvoor zijn die u's, en heb je speciaal voor een inner join gekozen of zou een andere join ook werken, En waarvoor zijn de um's?

Jerre Muesli

Legacy Member
Een join geef je best een alias mee. =Een naam die je zelf kiest. Op die manier kan je in de rest van de query definiëren welke kolom uit welke tabel je bedoelt. Neem nu dat zowel wp_users als wp_usermeta een kolom 'type' hebben, dan kan je zeggen 'select um.type from' of 'where u.type='x'. Anders weet de taal natuurlijk niet welke kolom je net wil.

grafzerkpisser

Legacy Member
Misschien is deze ook handig voor jouw
SQL Tutorial
Alles ivm sql staat hier vrij goed beknopt uitgelegd + voorbeelden.

sandervdw

Legacy Member
Denk ook even na over wat je exact wil zien, bij een inner join ga je enkel de records zien die in beide tabellen voorkomen. Stel dat een users geen record in wp_usermeta heeft, wil je deze dan zien of niet?
Let ook op performance, de volgorde van je tabellen kan hier van belang zijn.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan