2017-03-27 3 views
0

방금 ​​테이블 1을 선택하고 싶습니다. table1.id = 1 2 테이블이 있습니다 테이블 1 : 자동차. 표 2 : 소유자 테이블 1에는 모든 정보가 없습니다. 그래서 모든 정보를 하나의 열에 넣고 싶습니다. 나는 소유자 전화가 필요하다는 것을 의미한다SQL에서 두 테이블을 선택하는 방법을 반복하지만?

나는 그것을 좋아한다. 그러나 나는 모든 칼럼을 얻는다. 이드를 추가하는 방법?

drop table cars; 
drop table owners; 
CREATE TABLE cars(id INTEGER(11) PRIMARY KEY AUTO_INCREMENT, model TEXT,   price TEXT, name TEXT); 
create table owners(
id INTEGER(11) PRIMARY KEY AUTO_INCREMENT, 
phone varchar(25), 
name varchar(25), 
constraint owners_fk foreign key(id) references carss(id) 
); 

insert into cars(model , price, name)values('bmw', '10.000', 'thomas'); 
insert into cars(model , price, name)values('fiat', '5.000', 'none'); 
insert into owners(phone , name)values('0333333','thomas'); 
insert into owners(phone , name)values('04444444','Tom'); 


SELECT * FROM cars 
LEFT JOIN owners ON cars.name = owners.name 
UNION ALL 
SELECT * FROM cars 
RIGHT JOIN owners ON cars.name = owners.name; 

2 개 테이블 이 선택됩니다하지만 어떻게 내가 하나 개의 컬럼에있는 모든 정보를 정기적으로 얻을 수있는 전체 노동 조합의 한 열을 선택 할 수 있습니까? mysql을 사용합니다. 왼쪽에

괜찮 가입하지만 난하지를 두 번 이름을 수행 show picture of result

난 그냥 왼쪽 사용하는 경우 가입 :

SELECT * FROM cars 
LEFT JOIN owners ON cars.name = owners.name where name='thomas'; 
+0

'ALL'을 제거 하시겠습니까? 'UNION'은 중복을 제거합니다. – maraca

+0

사용중인 데이터베이스에 태그를 지정하십시오. –

+0

어떤 데이터베이스를 사용하고 있습니까? – GurV

답변

0

난 당신이 full outer join를 지원하지 않는 MySQL이 사용하는 가정. 이를 수행하는 올바른 방법은 모든 이름의 목록을 컴파일 한 다음 left join을 사용하는 것입니다.

+0

안녕하세요 @ 고든 리노프 (Gordon Linoff)라고 사용합니다. 그러나 많은 이름이 있으면 코드를 입력하는 데 더 많은 시간이 필요합니다 !!! – Json

+0

이제 조금 좋은 결과를 얻을 수 있습니다 : ''선택 * FROM cars 왼쪽 조인 소유자 ON cars.name = owners.name where name = 'thomas'; 하지만 이름 (필드)은 두 번 반복해서는 안됩니다. ' – Json

+0

@Json. . . 'SELECT'에서 원하는 컬럼을 열거하십시오. –