通过表联接选择

时间:2019-03-27 00:15:34

标签: sql postgresql

我想从Concrete_samples中获取*,但只能从method_name中获取*,而不是来自concrete_compaction_methods中的id

SELECT * FROM concrete_samples,concrete_compaction_methods WHERE concrete_compaction_methods.id = concrete_samples.compaction_method AND workorder_id=1

这当前返回的是我想要的所有东西,除了它给了我不需要的方法表的id列。

我要执行的语句的伪代码是

SELECT * FROM concrete_samples,  SELECT method_name FROM concrete_compaction_methods WHERE concrete_compaction_methods.id = concrete_samples.compaction_method AND workorder_id=1

我已经做了一些研究。我尝试使用工会,但我认为这不是正确或最整洁的解决方案

谢谢

2 个答案:

答案 0 :(得分:1)

尝试以下-

SELECT concrete_samples.*,method_name 
   FROM concrete_samples inner join concrete_compaction_methods 
   on concrete_compaction_methods.id = concrete_samples.compaction_method 
where workorder_id=1

答案 1 :(得分:1)

我强烈建议:

  • 学习使用正确的JOIN语法。
  • 在查询中使用表别名。
  • 限定所有列引用。

因此查询看起来更像这样:

SELECT cs.*, ccm.method_name
FROM concrete_samples cs JOIN
     concrete_compaction_methods ccm
     ON ccm.id = cs.compaction_method 
WHERE cs.workorder_id = 1;

我猜测workorder_id来自concrete_samples,而不是其他表格。