wat een cursus gegevensbanken allemaal niet kan bijbrengen. ik gebruik drupal 6 met de profile module. voornaam en familienaam zijn velden die ik met de profile module heb gedefinieerd.
Ik heb dus 2 queries:
Code:
SELECT replace(replace(replace(lower(concat(voornamen.value,'.',achternamen.value)),' ',''),'ë','e'),'ï','i') AS username, drupal_users.mail AS email
#selecteer de juiste kolommen en plak voornaam en achternaam achter elkaar met een puntje tussen. ik vervang ook 2 speciale karakters, maar het kan zijn dat er meer nodig zijn
FROM drupal_users, drupal_profile_values as voornamen,drupal_profile_fields AS voornaam_field, drupal_profile_fields AS achternaam_field, drupal_profile_values AS achternamen
#drupal_profile_values en fields worden 2 maal onder een andere naam gebruikt omdat er bij voor en achternamen een aparte join moet gebeuren. omdat je dynamisch profile fields kan aanmaken in drupal staan dus voornaam en achternaam niet als kolom in een tabel, maar is er een tabel om te zeggen dat er een voornaam veld is met een id, en een tabel met de values voor een field en een userid
WHERE voornamen.fid = voornaam_field.fid AND achternamen.fid = achternaam_field.fid AND drupal_users.uid = voornamen.uid AND drupal_users.uid = achternamen.uid AND voornaam_field.name = 'profile_voornaam' AND achternaam_field.name = 'profile_familienaam'
#de verschillende id's worden vergeleken en de juiste velden worden uit de field tabellen gehaald
AND EXISTS
#exists legt de voorwaarde op aan de onderstaande query dat er minstens 1 resultaat moet zijn.
(SELECT * FROM drupal_role AS roles, drupal_users_roles AS users_roles WHERE roles.name = 'leiding' AND roles.rid = users_roles.rid AND drupal_users.uid = users_roles.uid)
#deze subquery vraagt van een user op of die een rol leiding heeft. drupal_users.uid is een veld dat uit de hoofdquery komt.
Mailinglists per drupal rol
Code:
SELECT drupal_users.mail AS email
FROM drupal_users
WHERE EXISTS
#hier word gekeken of een bepaalde user de rol leiding heeft.
(SELECT * FROM drupal_role AS roles, drupal_users_roles AS users_roles WHERE roles.name = 'leiding' AND roles.rid = users_roles.rid AND drupal_users.uid = users_roles.uid)