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
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
content/les-corps-ces-objets-encombrants fr
65 node/29
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)