加入两个SQL表

时间:2015-04-15 10:07:38

标签: mysql sql phpmyadmin

我有两个带有一些常见ID的数据库表。 这是第一个表的结构:

ID 1 - House 1 - New york - 0100 xxx xxx
ID 2 - House 2 - London - 0100 yyx yyx

这是第二个表格的结构:

ID 101 - House 1 - Human 1 - 0100 yyy yyy
ID 102 - House 1 - Human 2 - 0100 xyx yxy
ID 103 - House 2 - Human 3 - 0100 xxy xxy

我想找到一种方法将两个表连接在一起,以产生类似于下表的内容:

House 1 - New York - 0100 xxx xxx - Human 1 - 0100 yyy yyy, Human 2 - 0100 xyx yxy

更新:

这是当前查询:

SELECT a.SO as ID, a.NOB as house, a.TEL as tel, o.IME_PREZIME as person,     o.MOBILNI_TELEFON as tel2
FROM OBJEKAT a
join OBJEKAT_KONTAKTOSOBA o on o.SO=a.SO
where a.MOBILNI_TELEFON is not null and o.MOBILNI_TELEFON is not null
order by 2

这就是我得到的(每个人都有两行或更多行,我希望它在一行中有多列)

16  01NI    018.522.885     Marija Radosavljević    064.844.1858
17  02NI    018.243.568     Dragana Grujić  064.844.1833
17  02NI    018.243.568     Adriana Cvetković   064.844.1867
15  04SK    021.465.263     Nikolina Lulić  064.844.1860
15  04SK    021.465.263     Dragana Borovčanin  064.844.1852
12  05KA    024.877.077     Milena Lončar   064.844.1724

正如你所看到的,在ID 17和15下我有两行,我希望它像我在第一次解释中给你看的一样。

第三次编辑: 我想要的是这个:

17  02NI    018.243.568     Dragana Grujić  064.844.1833  Adriana Cvetković 064.844.1867

第四次编辑: 这不重复,上面的重复建议是针对mysql的,我有Firebird,whis没有GROUP_CONCAT函数

2 个答案:

答案 0 :(得分:0)

你的问题并不完全清楚。但根据我的理解,你需要的是table2上的一个外键,它引用table1上的主键,类似于table2.person_id(fk) references table1.id(primary)

然后您的SQL查询将类似于:

"SELECT * FROM table1,table2 ON table1.id = table2.person_id WHERE ..."

希望这会有所帮助

答案 1 :(得分:0)

如果您有以下列名:

CREATE TABLE Table1
(
  Id INT,
  HouseName NVARCHAR(60),
  City NVARCHAR(60),        
  Col4 NVARCHAR(60)  
);
CREATE TABLE Table2
(
  Id INT,
  HouseName NVARCHAR(60),
  HumanName NVARCHAR(60),        
  Col4 NVARCHAR(60)  
);
INSERT INTO Table1 VALUES 
(1, 'House 1', 'New york', '0100 xxx xxx'),
(2, 'House 2', 'London', '0100 yyx yyx');

INSERT INTO Table2 VALUES 
(101, 'House 1', 'Human 1', '0100 yyy yyy'),
(102, 'House 1', 'Human 2', '0100 xyx yxy'),
(103, 'House 2', 'Human 3', '0100 xxy xxy');

SELECT t1.HouseName, t1.City, t1.Col4, t2.HumanName, t2.Col4, t3.HumanName, t3.Col4
FROM Table1 t1
JOIN Table2 t2
   ON t1.HouseName = t2.HouseName
JOIN Table2 t3
   ON t2.Id < t3.Id
WHERE t2.HouseName = t3.HouseName

SQL FIDDLE