我已经搞砸了这个查询 3 天了,无论如何我都无法得到正确的结果。我正在为我的一个朋友的机械车间开发一个小数据库。
我car
有3张桌子,jobs
和invoices
。一切都以"汽车"开头,如果你添加一个car
你会得到car_id
。下一步是向这辆车添加一个工作。当然,工作会转到jobs
表,也会记录car_id
。作业完成后,您可以从中创建发票,该发票转到invoices
表并再次记录car_id
。
cars jobs invoices
=======================================================
cID, make, model | jID,cID,job1 | iID,jID,cID,amount
1 audi a6 | 1 1 check | 1 1 1 99.99
2 bmw 750 | 1 2 oil | 2 2 2 56.97
3 saab 95 | 3 3 oil | 3 3 3 30.22
1 audi a6 | 4 1 oli | 4 4 1 22.33
小草图表格的样子。我想要得到的结果应该是这样的:
ID make model
--------------------------
1. audi a6
Job 1 Invoice 1
Job 4 Invoice 4
2. bmw 750
Job 2 Invoice 2
3. Saab 95
Job 3 Invoice 3
基本上,当我单击我的客户列表时,我会得到一个包含客户的表格行,在客户下方,我想打印工作和发票的链接。很长的帖子,但我希望你明白我的意思。
我尝试过不同的 JOIN,我尝试的最新
是SELECT * FROM cars
RIGHT JOIN jobs ON cars.car_id=jobs.car_id
RIGHT JOIN invoices ON cars.car_id=invoices.car_id
ORDER BY cars.car_id;
它有点有效,但它为具有相同客户信息的每个工作提供了单独的行。我可能打印了错误的结果。我只是不知道了。任何人都可以为此提供解决方案吗?右 SQL 命令 html 用于打印。
你为什么不把它放在一个带有如下字段的表中:
id car job invoices
===============+===============+==============+==============+
1 + fastCar + works + 99.99 +
+ + + +
+ + + +
用这样的语句:
CREATE TABLE cars (id int(11) AUTO_INCREMENT, car text(50) default '', job text(50) default '', invoices int(5) default NULL);
然后,您可以使用如下查询获取所有汽车属性:
SELECT job FROM cars WHERE car='fastCar';
并将所需值与另一个查询一起传递给包含以下内容的 teble作业的详细信息,例如,您可以根据需要在其中拥有作业 ID。