【问题标题】:Can I get data from a table based on multiple other tables?我可以从基于多个其他表的表中获取数据吗?
【发布时间】:2015-12-08 05:57:37
【问题描述】:
$query = "SELECT * FROM table3 WHERE name_id = '(SELECT name_id FROM table2
WHERE salary < 1000 && name = '(SELECT name FROM table1
WHERE savings > 1000)')'";

基本上,我想根据节省从表 1 中获取数据,并使用它从表 2 中获取数据,并使用该数据从表 3 中获取所有信息。但这不起作用。我的代码是正确的还是我做错了什么?

我也无法创建新表,我只想显示表 3 中的数据。

【问题讨论】:

  • 你为什么不使用连接?

标签: php mysql sql database mysqli


【解决方案1】:

使用join

SELECT * FROM table3 t3 join table2 t2 
on t3.name_id=t2.name_id
join table1 t1
on t3.name=t1.name
where salary < 1000 and savings > 1000

【讨论】:

  • 什么是 t3、t2 和 t1?
  • t3、t2 和 t1 是 table3,table2,table1 的别名 别名用于临时重命名表 @Matt.Doe
【解决方案2】:
$query="SELECT * FROM table3 LEFT JOIN table2 ON    table3.name_id=table2.name_id
LEFT JOIN table1 ON table3.name=table1.name 
WHERE table2.salary < 1000  AND table1.savings > 1000 "

【讨论】:

    【解决方案3】:

    连接的另一种语法是

    SELECT * FROM table1 t1,table2 t2 ,table3 t3 
    where t1.name = t3.name and 
    t2.name_id = t3.name_id and 
    t1.savings > 1000 and t2.salary < 1000;
    

    【讨论】:

      【解决方案4】:
      $query = "SELECT t3.* FROM table3 t3 
      INNER JOIN table2 t2 ON t2.name_id = t3.name_id AND t2.salary < 1000
      INNER JOIN table1 t1 ON t1.name = t2.name AND t1.savings > 1000";
      

      【讨论】:

      • 为您的查询添加一些解释
      猜你喜欢
      • 1970-01-01
      • 2015-02-20
      • 1970-01-01
      • 1970-01-01
      • 2020-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-01
      相关资源
      最近更新 更多