다 대다 관계에서 열의 모든 동일한 값을 찾고 다른 세 테이블과 테이블을 조인하는 방법은 무엇입니까?

신입생

세 개의 열 (owner_id, property_id, ownership_perc)과 다 대다 관계가 있으며이 테이블에 적용됩니다 (많은 소유자가 많은 속성을 가짐).

따라서 요청 된 결과에 대한 추가 정보를 얻기 위해 속성 (property_id)이 많은 owner_id를 모두 찾아서 다른 세 테이블 (표 1,3,4)과 연결하고 싶습니다. 내가 사용하는 모든 테이블은

Table 1: owner (id_owner,name)
Table 2: owner_property (owner_id,property_id,ownership_perc)
Table 3: property(id_property,building_id)
Table 4: building(id_building,address,region)

따라서 이렇게 시도하면 쿼리가 실행되지만 빈 값을 반환합니다.

SELECT address,region,name
FROM owner_property
JOIN property ON owner_property.property_id = property.id_property
JOIN owner ON owner.id_owner = owner_property.owner_id
JOIN building ON property.building_id=building.id_building
GROUP BY owner_id,address,region,name
HAVING count(owner_id) > 1
ORDER BY owner_id;

아래 코드를 시도 할 때만 속성이 많은 owner_id (아래 이미지 참조)를 반환하지만 다른 세 테이블과 조인하지 않습니다.

여기에 이미지 설명 입력

SELECT a.*
FROM owner_property a
JOIN (SELECT owner_id, COUNT(owner_id)
FROM owner_property
GROUP BY owner_id
HAVING COUNT(owner_id)>1) b
ON a.owner_id = b.owner_id
ORDER BY a.owner_id,property_id ASC;

그래서, 내가 테이블에 참여할 때 내가 뭘 잘못하고 있는지에 대한 제안이 있습니까? 감사합니다!

사라지다

이 쿼리 :

SELECT owner_id
FROM owner_property
GROUP BY owner_id
HAVING COUNT(property_id) > 1

owner_id1 property_id이상의 모든를 반환합니다 .
a의 조합에 중복의 경우가있는 경우 owner_idproperty_id다음 대신 COUNT(property_id)사용 COUNT(DISTINCT property_id)에있는 HAVING절.
따라서 다른 테이블에 조인하십시오.

SELECT b.address, b.region, o.name
FROM (
  SELECT owner_id
  FROM owner_property
  GROUP BY owner_id
  HAVING COUNT(property_id) > 1
) t
INNER JOIN owner_property op ON op.owner_id = t.owner_id 
INNER JOIN property p ON op.property_id = p.id_property
INNER JOIN owner o ON o.id_owner = op.owner_id
INNER JOIN building b ON p.building_id = b.id_building
ORDER BY op.owner_id, op.property_id ASC;

항상 테이블 이름 / 별칭으로 열 이름을 한정하십시오.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관