제품이 있습니다. 각 제품은 항목과 어셈블리로 구성됩니다. 어셈블리 자체도 항목으로 구성 될 수 있습니다. 따라서 그것은 계층이지만 깊이는 제한적입니다. 내가하고 싶은 것은 제품에 포함 된 항목과 어셈블리 및 제품 어셈블리의 항목을 나열하는 것입니다.다중 테이블 및 가능한 외부 조인을 사용하는 반 계층 적 SQL 쿼리
이것은 내가보고 싶은 출력입니다. 꼭 이와 같을 필요는 없지만 제품의 항목을 표시 한 다음 어셈블리와 각 어셈블리 내에 항목을 표시하는 것이 목표입니다. 열 수는 고정되어 있지 않습니다. 어셈블리에 항목을 표시하는 데 더 많은 것이 필요하면 문제가 없습니다.
ProductID ProductName AssemblyID AssemblyName ItemID ItemName
--------- ----------- ---------- ------------ ------ --------
P0001001 Product One
I0045 Item A
I0082 Item B
A00023 Assembly 1
I0320 Item 1
I0900 Item 2
A00024 Assembly 2
I0877 Item 3
I0900 Item 2
I0042 Item 4
그러면 제품 ID로 그룹화 된 보고서를 작성하여 각 제품의 내용을 나열 할 수 있습니다.
이것은 내가 지금 가지고있는 테이블 구조입니다.
+ProductList-+ +ProductItems-+
|ProductID | ----------> |ProductID | +ItemList-+
|ProductName | \ |ItemID | --------------------------------> |ItemID |
|Price | \ +-------------+ > |ItemName |
+------------+ \ /|Cost |
\ +ProductAssemblies-+ / +---------+
\-> |ProductID | +AssemblyItems-+ /
+-- |AssemblyID | ----> |AssemblyID | /
| |BuildTime | |ItemID | ---/
| +------------------+ +--------------+
|
| +AssemblyList-+
+-> |AssemblyID |
|AssemblyName |
+-------------+
어떤 종류의 SELECT 문이 필요합니까?
나는 외부 조인과 같은 일종의 필요가 있다고 생각하지만, 전 완전히 SQL 구문을 사용하여 SELECT 문을 구조화하는 방법을 알지 못합니다. 나의 모든 노력으로 항상 제품과 조립품마다 여러 번 나열된 제품이 만들어졌습니다. 따라서 제품에 3 개의 항목과 2 개의 어셈블리가있는 경우 제품이 6 번 표시됩니다.
내가 무엇을 검색해야하는지 모르기 때문에 이런 종류의 문제를 찾는 것은 쉽지 않습니다. 3 테이블 문제, 외부 조인 문제 또는 단순한 구문 론적 대답입니까?
아니면 어셈블리를 사용하지 않고 순수한 계층 구조 테이블 구조로 전환하는 것이 더 좋을까요? 내가 가진 문제를 해결하기 위해 계층 적 테이블을 검색하는 것이 더 쉬울 것입니다.
저는 LibreOffice 3.5.6.2 Base를 사용하고 있습니다. 그것은 마법사와 다른 도움이되는 것들을 가지고 있지만, 내가 스스로 찾아내는 상황의 복잡성 에까지 미치지는 않습니다. 목표는 데이터베이스에 가격이 포함되어있어 아이템 가격에서 제품 가격을 적절히 산출하는 데 사용할 수 있다는 것입니다 그리고 어셈블리를 만드는 시간.
친절하게, 나는 너무 초보 다.
에 오신 것을 환영합니다 :) 귀하의 질문은 좋은데, 일반적으로 당신이 시도한 것을 보여줄 수있는 좋은 제안입니다.) FAQ : http://stackoverflow.com/faq도 참조하십시오. . :) – ForceMagic
다음 SELECT "tblProductList"와 같은 항목을 시도했습니다. "ProductID", "tblProductItems".("tblProductList". "ProductID"= "tblProductItems". "ProductID") LEFT JOIN "tblProductList", "tblProductList", "tblProductList" ProductID "="tblProductAssemblies "."ProductID ")하지만 각 제품 반복되는 항목을 * 어셈블리 시간 (예 : 3 어셈블리 x 5 항목은 제품을 15 회 반복한다는 의미입니다. 나는 왼쪽과 오른쪽을 시도했습니다. 내가 말했듯이, 하나의 테이블을 제외하고는 아무 것도 할 수 없을 정도로 구문을 조인하는 것을 알지 못합니다. –
자신의 게시물을 편집하여이 정보를 추가 할 수 있습니다. "편집"링크를 클릭하십시오;) – ForceMagic