Q&A

  • 재고관리...
메뉴테이블, 재료테이블,재료입력테이블, 판매테이블이 있습니다. (식당관련)

메뉴테이블에는 음식에 관한 정보들이 있고, 재료테이블에는 각 음식에 들어가는 재료(돼지고기, 마늘, 양파, 감자...)에 대한 정보와 재료의 재고정보를 가지고 있습니다.

재료입력테이블에는 메뉴테이블에 있는 각 음식에 얼만큼의 재료가 들어가는지 입력을 합니다.



예)

<재료입력테이블> <재료테이블>

음식명 재료번호 수량 재료번호 재료명 재고량

------------------------ ---------------------------

불고기 1111 50 1111 돼지고기 100

불고기 2222 10 2222 양파 2

불고기 3333 10 3333 양념 10



여기서 재료입력테이블은 음식명과 재료번호가 기본키이고 재료테이블은 재료번호가 기본키입니다. 그리고 판매테이블은 판매번호가 기본키이고 음식명을 가지고 있습니다. (이해가 되셨는지?)



여기서 구현하고 싶은 것은 음식이 판매가 되었을 때 각 재료의 재고가 계산되도록 하는 것입니다. 보시다시피 한가지 음식에 관련된 재료가 여러가지입니다.



저는 이렇게 할려고 했는데 잘 안되는군요.

판매테이블의 음식명을 가지고 재료입력테이블의 재료번호를 찾아서 수량을 가지고 옵니다. 이 수량에 판매테이블의 판매된 음식수량을 곱한뒤 재료테이블의 재고량에서 빼는거죠. 그런데 재료입력테이블에서 한 음식에 들어가는 재료가 한가지이면 간단한데 여러가지라 그게 잘 안되는군요.



좋은 방안 있으시면 부탁드립니다.



2  COMMENTS
  • Profile
    신호성 1999.06.04 22:46
    박성훈 께서 말씀하시기를...

    > 메뉴테이블, 재료테이블,재료입력테이블, 판매테이블이 있습니다. (식당관련)

    > 메뉴테이블에는 음식에 관한 정보들이 있고, 재료테이블에는 각 음식에 들어가는 재료(돼지고기, 마늘, 양파, 감자...)에 대한 정보와 재료의 재고정보를 가지고 있습니다.

    > 재료입력테이블에는 메뉴테이블에 있는 각 음식에 얼만큼의 재료가 들어가는지 입력을 합니다.

    >

    > 예)

    > <재료입력테이블> <재료테이블>

    > 음식명 재료번호 수량 재료번호 재료명 재고량

    > ------------------------ ---------------------------

    > 불고기 1111 50 1111 돼지고기 100

    > 불고기 2222 10 2222 양파 2

    > 불고기 3333 10 3333 양념 10

    >

    > 여기서 재료입력테이블은 음식명과 재료번호가 기본키이고 재료테이블은 재료번호가 기본키입니다. 그리고 판매테이블은 판매번호가 기본키이고 음식명을 가지고 있습니다. (이해가 되셨는지?)

    >

    > 여기서 구현하고 싶은 것은 음식이 판매가 되었을 때 각 재료의 재고가 계산되도록 하는 것입니다. 보시다시피 한가지 음식에 관련된 재료가 여러가지입니다.

    >

    > 저는 이렇게 할려고 했는데 잘 안되는군요.

    > 판매테이블의 음식명을 가지고 재료입력테이블의 재료번호를 찾아서 수량을 가지고 옵니다. 이 수량에 판매테이블의 판매된 음식수량을 곱한뒤 재료테이블의 재고량에서 빼는거죠. 그런데 재료입력테이블에서 한 음식에 들어가는 재료가 한가지이면 간단한데 여러가지라 그게 잘 안되는군요.

    >

    > 좋은 방안 있으시면 부탁드립니다.

    >



    먼저 결론부터 말씀드리면 박성훈씨의 생각대로 한번에 해결할 수 있습니다.



    위 예시자료에서 재료테이블의 재고량이 부족하여 적절하지는 않지만

    불고기를 2인분 판매하였다고 가정하면 소요재료량은 아래와 같을것입니다.

    ===============================================

    1111 돼지고기 100 (단위소요량 50 * 2)

    2222 양파 20 (단위소요량 10 * 2)

    3333 양념 20 (단위소요량 10 * 2)

    ===============================================



    이는 박성훈씨 께서 생각하신 방법과 같이 판매테이블의 음식명으로 재료입력

    테이블과 조인하면 얻을 수 있는 결과 입니다.

    ================================================

    SELECT 판매테이블.판매량 * 재료입력테이블.재료량

    FROM 판매테이블

    LEFT OUTER JOIN 재료입력테이블 ON 판매테이.음식명 = 재료입력테이블.음식명

    =================================================



    상기 결과값을 재료테이블의 재고량에서 감해주면 원하는 결과를 얻을 수 있습니다.

    Query 컴포넌트를 이용하여 아래와 같이 SQL을 작성한 뒤 실행해 보십시요.

    ========================================================================

    UPDATE 재료테이블 SET 재고량 = 재고량 -

    (SELECT 판매테이블.판매량 * 재료입력테이블.재료량

    FROM 판매테이블

    LEFT OUTER JOIN 재료입력테이블 ON 판매테이블.음식명 = 재료입력테이블.음식명

    WHERE 재료입력테이블.재료번호 = 재료테이블.재료번호

    )

    =========================================================================

    단 위와 같이 SQL을 작성하여 실행하면 판매테이블의 모든 판매실적을 기준으로 재고량을 감산하기 때문에 WHERE 조건에 특정 판매건의 조건을 추가하셔야합니다.

    판매테이블의 키 항목을 알려주지 않아 예를 들 수 없지만 아래와 같은 개념으로 추가해 주세요

    ========================================================================

    UPDATE 재료테이블 SET 재고량 = 재고량 -

    (SELECT 판매테이블.판매량 * 재료입력테이블.재료량

    FROM 판매테이블

    LEFT OUTER JOIN 재료입력테이블 ON 판매테이블.음식명 = 재료입력테이블.음식명

    WHERE 재료입력테이블.재료번호 = 재료테이블.재료번호

    AND 판매테이블.키값 = :키값

    )

    =========================================================================





















  • Profile
    신인재 1999.06.04 04:49
    일딴 질문의 요지를 모르겠군요...말씀하신것을 보면

    일딴 프로그램적인 로직은 다 서있으신거 같은데.....

    해보신 코딩을 올려 주셔야 무엇이 문제인지 알 수 있습니다.

    이런식으로 서술을 하시면 답변을 드리기가 좀 곤란하거든요..





    박성훈 께서 말씀하시기를...

    > 메뉴테이블, 재료테이블,재료입력테이블, 판매테이블이 있습니다. (식당관련)

    > 메뉴테이블에는 음식에 관한 정보들이 있고, 재료테이블에는 각 음식에 들어가는 재료(돼지고기, 마늘, 양파, 감자...)에 대한 정보와 재료의 재고정보를 가지고 있습니다.

    > 재료입력테이블에는 메뉴테이블에 있는 각 음식에 얼만큼의 재료가 들어가는지 입력을 합니다.

    >

    > 예)

    > <재료입력테이블> <재료테이블>

    > 음식명 재료번호 수량 재료번호 재료명 재고량

    > ------------------------ ---------------------------

    > 불고기 1111 50 1111 돼지고기 100

    > 불고기 2222 10 2222 양파 2

    > 불고기 3333 10 3333 양념 10

    >

    > 여기서 재료입력테이블은 음식명과 재료번호가 기본키이고 재료테이블은 재료번호가 기본키입니다. 그리고 판매테이블은 판매번호가 기본키이고 음식명을 가지고 있습니다. (이해가 되셨는지?)

    >

    > 여기서 구현하고 싶은 것은 음식이 판매가 되었을 때 각 재료의 재고가 계산되도록 하는 것입니다. 보시다시피 한가지 음식에 관련된 재료가 여러가지입니다.

    >

    > 저는 이렇게 할려고 했는데 잘 안되는군요.

    > 판매테이블의 음식명을 가지고 재료입력테이블의 재료번호를 찾아서 수량을 가지고 옵니다. 이 수량에 판매테이블의 판매된 음식수량을 곱한뒤 재료테이블의 재고량에서 빼는거죠. 그런데 재료입력테이블에서 한 음식에 들어가는 재료가 한가지이면 간단한데 여러가지라 그게 잘 안되는군요.

    >

    > 좋은 방안 있으시면 부탁드립니다.

    >





    • 노영길
    • 1999.06.04 04:20
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 글쎄요.
      1999.06.05 01:19
      노영길 께서 말씀하시기를... > 안녕하세요 > 저는 전북에 사는 영길이라고 하는데 이번 레포트에서 FFT...
    • 박성훈
    • 1999.06.04 03:07
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 신호성
      1999.06.04 22:46
      박성훈 께서 말씀하시기를... > 메뉴테이블, 재료테이블,재료입력테이블, 판매테이블이 있습니다. (식당관...
    • 신인재
      1999.06.04 04:49
      일딴 질문의 요지를 모르겠군요...말씀하신것을 보면 일딴 프로그램적인 로직은 다 서있으신거 같은데.......
    • 이호선
    • 1999.06.04 00:54
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 김성동
      1999.06.04 20:15
      델4의 경우에는 OWNERDRAW 기능이 있어서 적절한 폰트를 가지고 일일이 그려주면 됩니다. 델4이하 버전에서...
    • 신인재
      1999.06.04 04:32
      글쎄요......2가지 방법이 있습니다.... 첫번째. 팝업메뉴를 새로 만든다......( 팝업메뉴에선 폰트를 ...
    • 박정현
    • 1999.06.04 00:51
    • 1 COMMENTS
    • /
    • 0 LIKES
    • redhead
      1999.06.04 23:30
      박정현 께서 말씀하시기를... > DBGrid에서 행의 위치를 알려면 어떻게 하면 될까요. > PowerBuilder에서...
    • 서영택
    • 1999.06.03 23:29
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이규하
      1999.06.04 19:18
      서영택 께서 말씀하시기를... > 환경 > UNIX, ORACLE8, DELPHI4 > > > 인스톨쉴드로 만들어서 설치...
    • 희우니
      1999.06.10 23:29
      저도 출력때문에... 고민좀 하다가... 보개 되는 군요... > > |고객명 | 판매금액 | 전화 |고객...
    • 김수봉
    • 1999.06.03 21:46
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      1999.06.03 23:25
      김수봉 께서 말씀하시기를... > 안녕하세요. 김수봉입니다. > > RichEdit에서 작성한 문서를 SQL문을 ...
    • chobo
    • 1999.06.03 21:09
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      1999.06.03 23:23
      chobo 께서 말씀하시기를... > 아주 간단한 DB를 만들고자 합니다. > BDE와 같은 Database Engine등은 사...
    • 남윤혁
    • 1999.06.03 20:09
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      1999.06.03 23:31
      남윤혁 께서 말씀하시기를... > 자주 질문하네요... ^^;;; > 질문은 RichEdit에서 역검색을 하고 싶습니...
    • 이정욱
      1999.06.03 20:27
      ServerSoket의 OnClientError와 OnClientDisconnect 에서 처리를 해주시면 됩니다. 델파이 초보자 께서...
    • 초보
      1999.06.05 19:41
      이정욱 께서 말씀하시기를... > ServerSoket의 OnClientError와 OnClientDisconnect 에서 처리를 해주시...
    • 송기원
    • 1999.06.03 18:46
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.06.03 20:30
      커서의 위치는 | 를 사용해서 결정합니다. 쉬프트 누르고 누르면 나오는 문자요... | 문자가 있는 곳에 ...
    • 송기원
    • 1999.06.03 17:27
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 류성호
      1999.06.04 22:46
      송기원 께서 말씀하시기를... > 델파이에 포함되어 있는 FTP컴포넌트를 이용하여 개발한 > 프로그램을 배...
    • 이정욱
      1999.06.03 20:06
      델파이 헬프에서 'Distributable Files'라는 색인으로 보세요. 이부분이 글씨가 작아서 잘 안보이니 인쇄...
    • 조성윤
    • 1999.06.03 05:59
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.06.03 20:02
      Dialogs.pas의 소스를 보시면 1554번째 줄에 ButtonNames: array[TMsgDlgBtn] of string = ( 'Yes...
    • 김윤경
    • 1999.06.03 04:38
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 신인재
      1999.06.03 04:59
      음냐 execsql하기 전에 showmessage(query1.sql.text); 를 삽입해서 쿼리를 확인해 보세요.... 불완전...
    • 정인철
    • 1999.06.03 02:41
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김경수
      1999.06.03 14:54
      안녕하세요. 전 전에 nt에서 퀵레포트를 이용해서 프로그램한적이 있었는데, 질문과 같은 문제가 생기더라...
    • 정창헌
    • 1999.06.03 02:15
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 신인재
      1999.06.03 05:01
      디비그리드를 찍고 마우스 오른쪽버튼을 누르면 컬럼editor를 부를 수 있습니다. 거기서 각 칼럼의 폰트를 ...
    • 기노현
    • 1999.06.03 00:01
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 신인재
      1999.06.03 05:04
      dgMultiSelect 옵션을 True로 주시고 함 해보세요.... 기노현 께서 말씀하시기를... > DBGrid에서 여러...