显示3个表格中的数据

时间:2015-03-10 13:05:22

标签: php mysql left-join

我已经搞乱了这个查询3天了,无论我怎么都得不到正确的结果。我正在为我的一位朋友为他的机械师工作一个小型数据库。

我有3个表carjobsinvoices。一切都始于"汽车"如果您添加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用于打印。

1 个答案:

答案 0 :(得分:0)

为什么不把它放在一个包含以下字段的表中:

    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的详细信息。