2013-05-31 3 views
1

데이터베이스에 두 개의 테이블이 있습니다. 각각에는 세 가지가 있습니다. 식별자는 자동 생성 된 숫자, 텍스트 필드 및 정수 필드입니다. 텍스트 필드 (Names)의 데이터는 두 테이블에서 모두 동일합니다. 숫자 입력란 만 다릅니다. 두 개의 숫자 필드 집합을 비교하고 두 테이블 중 숫자가 0이 아닌 모든 이름을 나열하는 문이 필요합니다. 또한 두 개의 숫자를 필드에 추가하고 결합 된 값으로 별도의 열을 만들고 그 값의 순서대로 이름을 가장 높은 값에서 가장 낮은 값 순서로 나열해야합니다.MYSQL 선언문 - 두 테이블에서 당기기

이것은 지금까지 내가받은 것처럼이며, 지금은, 내가

SELECT tableone.names 
FROM tableone, tabletwo 
WHERE (tableone.numbers > 0) AND (tabletwo.numbers > 0) 

답변

1
SELECT 
tableone.names, 
tableone.numbers + tabletwo.numbers AS numbers_sum 
FROM tableone 
LEFT JOIN tabletwo USING (names) 
WHERE (tableone.numbers > 0) 
AND (tabletwo.numbers > 0) 
ORDER BY 2 DESC 

업데이 트를 SQL로 아주 새로운 붙어하고, 테스트 SQL :

USE test; 

CREATE TABLE IF NOT EXISTS tableone (
    names TINYTEXT NOT NULL, 
    numbers INT NOT NULL, 
    PRIMARY KEY (names(100)) 
); 

CREATE TABLE IF NOT EXISTS tabletwo (
    names TINYTEXT NOT NULL, 
    numbers INT NOT NULL, 
    PRIMARY KEY (names(100)) 
); 

INSERT INTO tableone SELECT 'a', RAND(); 
INSERT INTO tableone SELECT 'b', RAND(); 
INSERT INTO tableone SELECT 'c', RAND(); 
INSERT INTO tableone SELECT 'd', RAND(); 
INSERT INTO tabletwo SELECT names, RAND() FROM tableone; 

SELECT 
tableone.names, 
tableone.numbers + tabletwo.numbers AS numbers_sum 
FROM tableone 
LEFT JOIN tabletwo USING (names) 
WHERE (tableone.numbers > 0) 
AND (tabletwo.numbers > 0) 
ORDER BY 2 DESC; 

출력 :

+-------+-------------+ 
| names | numbers_sum | 
+-------+-------------+ 
| b  |   2 | 
| d  |   2 | 
+-------+-------------+ 
+0

시도해 볼 때 FROM 절에 구문 오류가 있습니다. – jdreamer30

+0

제가 작성한 SQL을 테스트 한 결과, 서버에서 오타가있는 테이블 이름을 사용할 수 있습니까? –

+0

그것은 (이름)을 강조 표시하고 거기에 오류가 있음을 말합니다 ..하지만 이름이 테이블에 맞습니다. 나는 전혀 이해하지 못합니다. – jdreamer30

관련 문제