我有两个带有一些常见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函数
答案 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