简体   繁体   English

将嵌套SQL SELECT语句中的SELECT结果分配给变量-PHP

[英]Assigning SELECT Results in Nested sql SELECT Statement to variables - PHP

In PHP-MySQL, I am using a nested select statement as follows: 在PHP-MySQL中,我使用嵌套的select语句,如下所示:

SELECT object_id FROM form_entry WHERE id=(SELECT entry_id FROM form_entry_values WHERE value='32711178-888' AND field_id = (SELECT id FROM form_field WHERE name='dealer'))

Each SELECT returns only one cell as a result. 结果,每个SELECT仅返回一个单元格。 However, I need each result of these SELECTs for example I need (depth 3): 但是,例如,我需要这些SELECT的每个结果(深度3):

SELECT id FROM oform_field WHERE name='dealer'

also I need (depth 2): 我还需要(深度2):

SELECT entry_id FROM form_entry_values WHERE value='32711178-888' AND field_id = (SELECT id FROM form_field WHERE name='dealer')

and I need (depth 1): 我需要(深度1):

SELECT object_id FROM form_entry WHERE id=(SELECT entry_id FROM form_entry_values WHERE value='32711178-888' AND field_id = (SELECT id FROM form_field WHERE name='dealer'))

Is there any way to assign the results of these statements during only one execution of the largest SQL query (indicated as "depth 1")? 在最大的SQL查询(表示为“深度1”) 执行一次期间,是否有任何方法可以分配这些语句的结果? In other words, without executing three sql queries, I am looking for a way assigning the results of the SELECT statements in each depth to a variable like $result_1, $result_2, etc. 换句话说,在不执行三个sql查询的情况下,我正在寻找一种将SELECT语句的结果在每个深度中分配给变量的方法,例如$ result_1,$ result_2等。

It sounds there is no way to deal with it, but thanks in advance... 听起来没有办法解决,但在此先感谢...

Your query is equivalent with: 您的查询等效于:

SELECT e.object_id
FROM form_entry e
  INNER JOIN form_entry_values v ON e.id=v.entry_id
  INNER JOIN form_field f ON v.field_id = f.id
WHERE v.value='32711178-888' 
  AND f.name='dealer'

and in this form the answer is straight forward: just add v.entry_id and f.id to the list of expressions in the SELECT clause: 并采用这种形式的答案很简单:只需将v.entry_idf.id添加到SELECT子句中的表达式列表中即可:

SELECT e.object_id, v.entry_id, f.id
FROM form_entry e
  INNER JOIN form_entry_values v ON e.id=v.entry_id
  INNER JOIN form_field f ON v.field_id = f.id
WHERE v.value='32711178-888' 
  AND f.name='dealer'

try something like: 尝试类似:

SELECT depth1.object_id, depth2.entry_id, depth3.id
FROM form_entry depth1
JOIN form_entry_values depth2 ON depth1.id=depth2.entry_id
JOIN form_field depth3 ON depth3.id=depth2.entry_id
WHERE
depth2.value='32711178-888'
AND depth3.name='dealer';

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM