MySQL查询;合并两张桌子

时间:2014-12-03 09:15:38

标签: mysql select-query

我有两张桌子:Invoice

 id number   date      client end client city   vracht
  1   4271   2014-5-28 ALLIN  STIHO      ZWOLLE 0

Materials

 id number material thickness length width amount price
  1 14271  Ocoume          10   2500  1220    150   2,3
  2 14271  Ocoume          15   2500  1220     60   2,3
  3 14271  Ocoume          18   2500  1220    125   2,3
  4 14271  Ocoume          22   2500  1220     44   2,3
  5 14271  Ocoume          40   2150  1000     72   2,3
  6 14271  Ocoume          18   3100  1530     25   2,3

Invoice表中是发票。在Materials表中是属于发票的材料。

我想要的是将具有相同发票号(表中的数字列)的那些与选择查询组合在一起,如下所示:

number date      client end client city   vracht material thickness length width amount price
 14271 2014-5-28 ALLIN  STIHO      ZWOLLE      0 Ocoume          10   2500  1220    150   2,3
 14271 2014-5-28 ALLIN  STIHO      ZWOLLE      0 Ocoume          15   2500  1220     60   2,3
 14271 2014-5-28 ALLIN  STIHO      ZWOLLE      0 Ocoume          18   2500  1220    125   2,3
 14271 2014-5-28 ALLIN  STIHO      ZWOLLE      0 Ocoume          22   2500  1220     44   2,3
 14271 2014-5-28 ALLIN  STIHO      ZWOLLE      0 Ocoume          40   2150  1000     72   2,3
 14271 2014-5-28 ALLIN  STIHO      ZWOLLE      0 Ocoume          18   3100  1530     25   2,3

这个查询怎么样?

5 个答案:

答案 0 :(得分:3)

 select * from  invoice, materials where invoice.number=materials.number

而不是*,建议写下所需的列..

答案 1 :(得分:3)

select 
    `f`.`number`,
    `f`.`client`, 
    `f`.`eind_client`, 
    `f`.`city`, 
    `f`.`vracht`,
        `m`.`material`, 
        `m`.`thickness`, 
        `m`.`length`, 
        `m`.`width`, 
        `m`.`amount`, 
        `m`.`price`
from 
     `invoice` as `f` 
right outer join 
     `materials` as `m`
on 
    `f`.`number`=`m`.`number`

答案 2 :(得分:2)

如上所述,如果你有外键关系,你可以使用JOIN.这应该会给你想要的结果。

您可以使用:

Select "columns you need " or "* "from invoice, materials 
WHERE invoice.number = material.number

答案 3 :(得分:1)

您可以使用JOIN从两个表中检索列。

示例:

SELECT *
FROM
    Invoice AS i,
    Materials AS m,
WHERE
    m.number = i.number
    AND
    m.number = 14271

答案 4 :(得分:1)

您可以使用加入。

  SELECT * FROM Material as M LEFT JOIN Invoice as I ON I.number=M.Number