1

印刷表

我在这里有一个打印的表,我发出一个查询以尝试加入 Tech_id、clients_id、job_id、part_id 也应该在其表/列中填充相应键的表。

这是我的查询:

SELECT * FROM work_orders, technicians as tech, parts_list as parts, job_types as    job, clients as client 
LEFT JOIN technicians ON tech_id = technicians.tech_name
LEFT JOIN parts_list ON part_id = parts_list.Part_Name
LEFT JOIN job_types ON job_id = job_types.Job_Name
LEFT JOIN clients ON clients_id = clients.client_name

我弄乱了多种不同的变体,这个似乎语法正确,但现在我得到了:on 子句中的列 'clients_id' 不明确

我相信这不仅会发生在客户身上,也可能会发生在其他人身上。我希望能够打印如上图所示的表格,但列出了客户。是否也可以通过一个查询来完成?谢谢。

4

2 回答 2

1

你有两个问题。

首先(这可能不是您的问题,但这是一个“好习惯”),您不应该使用 SELECT *,因为您确实可以在不同的表中拥有同名的字段。

这是在 Select 子句中避免 * 的(众多)好理由之一。

然后,您的主要问题是您在 from 子句中选择表,然后再次加入。

有问题的线路:

FROM work_orders, technicians as tech, parts_list as parts, job_types as    job, clients as client

所以(我不知道你的表结构,所以它们可能是错误的,但你明白了)

SELECT 
  w.client_id, 
  t.tech_name
  --etc 
 FROM work_orders w
LEFT JOIN technicians t ON c.tech_id = t.tech_name
LEFT JOIN parts_list  p ON c.part_id = p.Part_Name
LEFT JOIN job_types j ON w.job_id = j.Job_Name
LEFT JOIN clients c ON w.clients_id = c.client_name
于 2013-02-07T21:25:40.177 回答
0

这意味着clients_id 存在于多个表中。你需要指定你想要哪一个。因此,例如,如果您想要 clients 表的 clients_id,请执行 SELECT clients.clients_id

如果您的问题中列出的所有字段都在客户表中,您可以这样做:

SELECT clients.* FROM work_orders, technicians as tech, parts_list as parts, job_types as    job, clients as client 
LEFT JOIN technicians ON tech_id = technicians.tech_name
LEFT JOIN parts_list ON part_id = parts_list.Part_Name
LEFT JOIN job_types ON job_id = job_types.Job_Name
LEFT JOIN clients ON clients_id = clients.client_name
于 2013-02-07T21:18:32.933 回答