【发布时间】:2015-07-14 11:09:25
【问题描述】:
我创建了这个 SQL 查询来连接关键变量并从数据库中提取信息。
首先我使用了这个:
SELECT *
FROM `users` a,`field_data_field_ypefthinos` b, `field_data_field_branch_chain` c, `field_data_field_taxonomy_etairia` d, `node_revision` e
WHERE a.uid = b.field_ypefthinos_uid
AND a.uid = 1
AND b.entity_id = c.entity_id
AND d.field_taxonomy_etairia_tid = c.field_branch_chain_tid
AND d.bundle = 'kouponia'
AND d.entity_id = e.nid
然后我将其转换为 this 以便能够使用 stmt bind_result 函数
SELECT
users.uid,
field_data_field_ypefthinos.field_ypefthinos_uid,
field_data_field_ypefthinos.entity_id,
field_data_field_branch_chain.entity_id,
field_data_field_taxonomy_etairia.field_taxonomy_etairia_tid,
field_data_field_taxonomy_etairia.bundle,
field_data_field_taxonomy_etairia.entity_id,
node_revision.nid
FROM `users`,`field_data_field_ypefthinos`, `field_data_field_branch_chain`, `field_data_field_taxonomy_etairia`, `node_revision`
WHERE users.uid = field_data_field_ypefthinos.field_ypefthinos_uid
AND users.uid = 1
AND field_data_field_ypefthinos.entity_id = field_data_field_branch_chain.entity_id
AND field_data_field_taxonomy_etairia.field_taxonomy_etairia_tid = field_data_field_branch_chain.field_branch_chain_tid
AND field_data_field_taxonomy_etairia.bundle = 'kouponia'
AND field_data_field_taxonomy_etairia.entity_id = node_revision.nid
接下来我想做的是:
1) 使用表/字段别名以便代码更容易维护,就像我在第一个代码中所做的那样。
2) 重要提示:能够将表 field_data_field_ypefthinos 的结果限制为 LIMIT 1。
我的目标是有这样的代码:
SELECT a.uid, b.field_ypefthinos_uid, b.entity_id, c.entity_id, d.field_taxonomy_etairia_tid, c.field_branch_chain_tid, d.bundle, d.entity_id
FROM `users` a,`field_data_field_ypefthinos` b LIMIT 1, `field_data_field_branch_chain` c, `field_data_field_taxonomy_etairia` d, `node_revision` e
WHERE a.uid = b.field_ypefthinos_uid
AND a.uid = 1
AND b.entity_id = c.entity_id
AND d.field_taxonomy_etairia_tid = c.field_branch_chain_tid
AND d.bundle = 'kouponia'
AND d.entity_id = e.nid
【问题讨论】:
-
您声明要将结果限制为表 field_data_field_ypefthinos 中的一条记录。在编写任何代码之前,您必须决定要使用哪条记录。
-
来自 field_data_field_ypefthinos 的第一条记录(匹配),一旦 a.uid = b.field_ypefthinos_uid 匹配,脚本应该继续
-
有标识第一条记录的字段吗?主键字段中的最低值?某个日期字段的最早值?
-
这就是我想要实现的目标:SELECT b.entity_id FROM
usersa,field_data_field_ypefthinosb WHERE a.uid = b.field_ypefthinos_uid AND a.uid = 1 LIMIT 1 (OUTPUT: 626 ) 选择 e.title FROMfield_data_field_branch_chainc,field_data_field_taxonomy_etairiad,node_revisione AND c.entity_id = '626' AND d.field_taxonomy_etairia_tid = c.field_branch_chain_tid AND d.bundle = 'kouponia' AND d.entity_id = e .nid