나는 하나의 주 테이블 인 deliveries를 가지고 있으며 deliveries_languages와 일대일 관계가 있습니다 .dl, deliveries_markets dm 및 deliveries_tags dt는 delivery_id가 외래 키입니다. 이 3 개의 테이블은 언어, 시장 및 태그와 각각 1 대 1의 관계가 있습니다. 덧붙여, 배달, 테이블은 회사와 일대일 관계를 맺고 company_is를 외래 키로 사용합니다. 여기여러 조인에서 고유 한 행을 가져 오는 중 SQL
SELECT deliveries.*, languages.display_name, markets.default_name, tags.default_name, companies.name
FROM deliveries
JOIN deliveries_languages dl ON dl.delivery_id = deliveries.id
JOIN deliveries_markets dm ON dm.delivery_id = deliveries.id
JOIN deliveries_tags dt ON dt.delivery_id = deliveries.id
JOIN languages ON languages.id = dl.language_id
JOIN markets ON markets.id = dm.market_id
JOIN tags ON tags.id = dt.tag_id
JOIN companies ON companies.id = deliveries.company_id
WHERE
deliveries.name ILIKE '%new%' AND
deliveries.created_by = '5f331347-fb58-4f63-bcf0-702f132f97c5' AND
deliveries.deleted_at IS NULL
LIMIT 10
내가 여러 언어, 시장과 태그가 delivery_id 때문에 각각의 중복 delivery_ids을 얻고있다 : 내가 작성한 쿼리입니다 다음. 고유 한 delivery_ids에 한도를 사용하고 싶습니다. 따라서 제한 10은 위의 조인 조회에서 10 개의 레코드를 제공하지 않아야하며 distinct delivery_id (deliveries.id)가있는 10 개의 레코드를 제공해야합니다. 아마 파생 테이블 개념을 사용할 수는 있지만 어떻게 할 수 있을지 확신 할 수 없습니다. 누군가이 문제를 해결하기 위해 나를 도울 수 있습니까? 포스트 그레스에서
어떤 DBMS를 사용하고 있습니까? – jarlh
delivery_id 당 10 개의 행을 선택하는 방법은 무엇입니까? (여러 언어를 유지하는 것은 약간 이상하게 보입니다.) – jarlh
postgreSQL을 사용하고 있습니다. –