Ex de requetes SQL drupal

drupal 6

simple: liste des emails

SELECT u.mail AS mail, v.value AS site
FROM `users` AS u
JOIN variable AS v
WHERE v.name = 'site_name'

de user 1

SELECT v.value AS site, u.mail AS admin_mail
FROM users AS u
JOIN variable AS v
WHERE u.uid = 1 AND v.name = 'site_name'

table url_alias et node

champs des tables
clef table url_alias table node
x `pid` int(10) unsigned NOT NULL, `nid` int(10) unsigned NOT NULL,
  `src` varchar(128) NOT NULL DEFAULT '',
`dst` varchar(128) NOT NULL DEFAULT '',
  `language` varchar(12) NOT NULL DEFAULT ''
  `vid` int(10) unsigned NOT NULL DEFAULT '0',
  `type` varchar(32) NOT NULL DEFAULT '',
  `language` varchar(12) NOT NULL DEFAULT '',
  `title` varchar(255) NOT NULL DEFAULT '',
  `uid` int(11) NOT NULL DEFAULT '0',
  `status` int(11) NOT NULL DEFAULT '1',
  `created` int(11) NOT NULL DEFAULT '0',
  `changed` int(11) NOT NULL DEFAULT '0',
  `comment` int(11) NOT NULL DEFAULT '0',
  `promote` int(11) NOT NULL DEFAULT '0',
  `moderate` int(11) NOT NULL DEFAULT '0',
  `sticky` int(11) NOT NULL DEFAULT '0',
  `tnid` int(10) unsigned NOT NULL DEFAULT '0',
  `translate` int(11) NOT NULL DEFAULT '0'
ex de contenu src: user/ID, node/ID, taxonomy/term/ID
dst: users/usename, content/title, category/mots-clés/mot1
type: page, book...
title: titre page (sans chemin)

Comment relier ces 2 tables (pas de clef commune)?

Source: http://robmalon.com/obtaining-the-url_alias-in-a-drupal-mysql-query/

Sélection d'un alias URL via id du node

D'abord, dans drupal (étant logué), chercher un node existant (et connu) et noter son ID (et son chemin). Par exemple, "Les corps, ces objets encombrants" a l'ID 29 et pour chemin: content/les-corps-ces-objets-encombrants

La requete:  SELECT * FROM url_alias WHERE src = CONCAT('node/','29')
retourne:   pid   src          dst                            language
          65  node/29  
content/les-corps-ces-objets-encombrants        fr

Puis, créer un object pour récup les données, et utiliser dst pour y récupérer l'URL de ce node (sans la partie domaine).

JOIN url_alias avec colonne SRC d'un ID node

Souvent, pour manipuler un chemin, on doit joindre son URL à d'autres données :
SELECT *
FROM node n
JOIN url_alias ua
ON ua.src = CONCAT(
'node/',n.nid)

Ex:

SELECT n.nid, n.type, n.title, ua.src, ua.dst
FROM node AS n
JOIN url_alias AS ua
where n.type='autrice' AND ua.src = CONCAT('node/',n.nid)

Pour drupal 7 (vm14, base ganx2):

SELECT n.nid, n.type, n.title, ua.source, ua.alias
FROM ganx2.node as n
JOIN ganx2.url_alias as ua
where ua.source = CONCAT('node/',n.nid)

logo drush