2013-03-19 5 views
0

두 개의 테이블이 있습니다.두 테이블을 GUID로 조인하고 행별로 열에 값을 추가하는 데 도움이 필요합니다.

하나의 테이블은 항목과 비용을 저장하며 고유 한 GUID로 고유하게 저장됩니다.

ItemCost 테이블을

Item_ID  ItemCategory Item Cost 

x-xx-x  Computer  Laptop 400.00 

다른 테이블에는 가장 도시 이러한 항목들의 집합이다 작업 공간.

작업 공간 표 지금은 그들이 작업 공간 테이블에 나타내는 GUID 년대에 ItemCost 테이블에서 비용을 가입 할 수있는 방법이 필요합니다

WorkSpace_ID Workspace_Name Item_Category_1  Item_Category_2 and so on.... 

xx-xx-xx   Workspace A  xx-xx-xx   (the guid from the first table) 

, 다음,주고 열을 가로 질러 그들을 추가 작업 공간의 총 비용. 작업 공간 테이블의 일부 Item_Category 열은 null입니다.

SQL에서 아주 새롭고 불타는 일종의 화재입니다. 이것을 구조화하는 더 좋은 방법이 있다면, 나는 제안을 위해 열려 있습니다.

감사합니다.

WorkSpaceItems 표 :

+0

무엇이이 소프트웨어를 사용하고 있습니까? 재고 목록, 주문, 회계? 작업 공간 또는 현재 비용과 관련된 시간에 대한 비용을 필요로하는 경우 설계를 변경합니다. – HLGEM

답변

2

음 부분이 Workspace 테이블의 구조 :

다음은 스키마 및 샘플 쿼리에 대한 링크입니다. 이 테이블은 정규화되지 않았습니다.

현재 디자인에서는 unpibot 또는 workspace 테이블에 여러 번 가입해야 결과를 얻을 수 있습니다.

현재 구조 쿼리는 다음과 같습니다

create table workspace 
(
    workspace_id, 
    Workspace_Name 
); 

create table workspace_items 
(
    workspace_id, 
    Item_ID 
); 

이가 합류를 만들 것입니다 : 당신이라는 Workspaceworkspace_itemsItemCost을 연결하는 Workspace 테이블과 별도의 테이블을 것

일반적으로
select * 
from itemcost i 
left join 
(
    select workspace_id, 
    worksapce_name, 
    item_category_1 ItemCategory 
    from workspace 
    union all 
    select workspace_id, 
    worksapce_name, 
    item_category_2 
    from workspace 
) w 
    on i.Item_ID = w.ItemCategory 

테이블에 훨씬 쉽게. 이 구조를 사용하면 각 작업 영역에 여러 항목 범주를 할당 할 수 있습니다. 테이블 구조를 변경하면 검색어는 다음과 같습니다.

select * 
from itemcost i 
left join workspace_items wo 
    on i.item_id = wi.item_id 
left join workspace w 
    on wi.workspace_id = w.workspace_id 
+0

도움을 주셔서 감사합니다. 당신과 Shlomo가 제안했듯이 방금 다른 테이블을 만들었습니다. 인생을 훨씬 쉽게 만들어주었습니다. 다시 한번 감사드립니다. – user2187945

+0

@ user2187945 도와 주시겠습니까?이 구조가 훨씬 쉬워집니다. :) – Taryn

0

당신은 (작업 공간 테이블에서 항목 열을 제거) 작업 영역 및 항목 사이의 많은 테이블에 다른 많은 만들 필요가 WorkSpace_ID - 항목 ID

그런 다음 쿼리를 쉽게 모든 WorkSpaceItems, Items 테이블에 합류하고 합산합니다. 문제의 http://www.sqlfiddle.com/#!3/35336/7

+0

고마워요! 방금 다른 테이블을 만들고 내 문제를 해결했습니다. – user2187945