MySQL 관계형 데이터베이스에서 데이터를 선택하는 동안 빈 세트
-
19-09-2019 - |
문제
수십 개의 테이블이있는 관계형 MySQL 데이터베이스가 있습니다 ... 내 쿼리는 길이가 1000 피트이며 거의 모든 테이블에서 데이터를 선택합니다 ... 또한 '메인'테이블도 가지고 있으며 다른 모든 테이블은 그 중 하나를 참조하고 있습니다. 메인 테이블에 한 행을 입력하고 다른 테이블에서 해당 행에 대한 모든 관계를 만들 때 쿼리가 잘 작동합니다. 그러나 메인 테이블에 한 줄을 입력하고 다른 곳이 없으면 빈 세트가 발생합니다. 그러나 나는 내 결과에서 최소한 그 정보를 얻고 싶습니다. 또는 물론, 일부 테이블이 해당 레코드 (행)에 대한 정보가 없다는 사실에 관계없이 다른 테이블에 입력 한 모든 정보는 ...
도와 줘서 고마워!
업데이트:
나는 Join Syntax를 사용하지 않으며 내 쿼리는 이것과 유사하게 보입니다.
$query = "SELECT a.*, b.*, c.*, d.*, e.*, f.*";
$query .= " FROM a, b, c, d, e, f";
$query .= " WHERE a.aID = b.aID";
$query .= " AND b.bID = c.bID";
$query .= " AND b.bID = d.bID";
$query .= " AND b.bID = e.bID";
$query .= " AND b.bID = f.bID";
해결책
당신의 질문은 지금은 매우 모호하지만 대부분은 당신이 사용하는 사실 때문일 것입니다. INNER JOIN
대신 LEFT JOIN
에스.
이 쿼리 :
SELECT *
FROM main
JOIN secondary
ON secondary.main_id = main.id
만약 그렇다면 아무것도 반환하지 않습니다 secondary
비었다.
이 쿼리 :
SELECT *
FROM main
LEFT JOIN
secondary
ON secondary.main_id = main.id
돌아올 것입니다 적어도 각 레코드에 대한 한 레코드 main
, 2 차 필드를 대체합니다 NULL
S 일치 레코드가없는 경우 secondary
.
업데이트:
절대적인 JOIN
사용하는 구문 (테이블을 열거하고 제공합니다. JOIN
조건 WHERE
조항) 가정합니다 INNER JOIN
에스.
그것을 가정합니다 a
"메인"테이블이므로 다음과 같이 쿼리를 다시 작성하십시오.
SELECT a.*, b.*, c.*, d.*, e.*, f.*
FROM a
LEFT JOIN
b
ON b.aID = a.aID
LEFT JOIN
с
ON c.bID = b.bID
LEFT JOIN
d
ON d.bID = b.bID
LEFT JOIN
e
ON e.bID = b.bID
LEFT JOIN
f
ON f.bID = b.bID