【问题标题】:mysql join tables limit specific tablemysql连接表限制特定表
【发布时间】: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 users a,field_data_field_ypefthinos b WHERE a.uid = b.field_ypefthinos_uid AND a.uid = 1 LIMIT 1 (OUTPUT: 626 ) 选择 e.title FROM field_data_field_branch_chain c, field_data_field_taxonomy_etairia d, node_revision e 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

标签: php mysql sql join


【解决方案1】:

DISTINCT 完成了这项工作,解决方案:

SELECT DISTINCT e.title
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

【讨论】:

    猜你喜欢
    • 2023-03-29
    • 1970-01-01
    • 2011-07-04
    • 1970-01-01
    • 1970-01-01
    • 2017-10-26
    • 1970-01-01
    • 2012-04-04
    相关资源
    最近更新 更多