>source

테이블이 많고 열이 많은 NGO 데이터베이스를 작업 중입니다. 이제 각 성별 유형 (m = men, w = women, c = child)에 따른 계산/금액 기여도에 집중하고 있습니다

다음은 내 테이블과 열입니다.

Table1 "basic_detail"
+---+------------------+------+
|id | name             | m_w_c 
----+------------------+------+
|1  |jhon              |m
|2  |sara              |w
|3  |mike              |c
|4  |simon             |m
|5  |frank             |c
|6  |suzi              |w
"and so on more than 1000 entries"
Table2 "contribution" (c_id= contribution table_id auto incremental) (bd_id= basic_detail table_id)
+------+------+--------+-----------+-----------+
|c_id  |bd_id | books  | uniform   | food      |
+------+------+--------+-----------+-----------+
|1     | 1    | 50     | 40        | 0         |
|2     | 3    | 0      |  0        | 5         |
|3     | 2    | 50     | 45        | 0         |
|4     | 5    | 2      | 4         | 3         |
|5     | 4    | 60     | 75        | 0         |
|6     | 6    | 35     | 50        | 10        |
and so on more than 1000 entries equals to basic_detail table


남성, 여성 및 아동 기여도를 별도로 계산하고 싶습니다

아동이 음식에만 기여할 수있는 경우, 아동이 책과 유니폼에 기여하는 경우이 기여는 c_contribution으로 계산되어야합니다.

여기서 m = men, w = women은 음식에 기여하는 경우에만 책과 유니폼에 기여할 수 있습니다. 다음 금액은 c_contribution에 계산됩니다.

당신이 만족하지 않으면 내 질문에 친절하게 도와달라고 요청합니다. 사전에 "-"표시하지 마십시오.


  • 답변 # 1

    이것이 어떻습니까?

    $men = $women = child = c_contribution = 0;
    $contributions = $pdo->query("
        SELECT c.books, c.uniform, c.food, bd.m_w_c
        FROM contribution c
        LEFT JOIN basic_detail bd ON c.bd_id = bd.id
    ")->fetchAll();
    foreach($contributions as $contribution) {
        if ( $contribution['m_w_c'] == 'c' ) {
            $c_contribution += $contribution['books'];
            $c_contribution += $contribution['uniform'];
            $child += $contribution['food'];
        } else {
            $men += $contribution['books'];
            $women += $contribution['books'];
            $men += $contribution['uniform'];
            $women += $contribution['uniform'];
            $c_contribution += $contribution['food'];
        }
    }
    print("Men Total: $men");
    print("Women Total: $women");
    print("Child Total: $child");
    print("Combined Total: $c_contribution");
    
    

  • 답변 # 2

    이 코드는 각 분야의 남성, 여성, 아동 기여의 합계를 보는 데 도움이되지만 여전히 남성 또는 여성의 아동 합계에 음식에 대한 기여를 추가 할 수 없습니다.

    require "connpdo.php";
            $connection = new PDO($dsn, $username, $password, $options);
    $men = $women = $child = $c_contribution = 0;
    $contributions = $connection->query("
        SELECT c.books, c.uniform, c.food, bd.m_w_c
        FROM contribution c
        LEFT JOIN basic_detail bd ON c.bd_id = bd.id
    ")->fetchAll();
    foreach($contributions as $contribution) {
        if ( $contribution['m_w_c'] == 'w' ) {
            $women += $contribution['books'];
            $women += $contribution['uniform'];
        } elseif ( $contribution['m_w_c'] == 'm' ) {
            $men += $contribution['books'];
            $men += $contribution['uniform'];
        } elseif ( $contribution['m_w_c'] == 'c' ) {
            $child += $contribution['books'];
            $child += $contribution['uniform'];
            $child += $contribution['food']; 
    }
    }
    print("Men Total: $men");
    print("Women Total: $women");
    print("Child Total: $child");
    print("Combined Total: $c_contribution");
    ?>
    
    
    제발 ...

관련 자료

  • 이전 security - 업로드 된 파일이 실제 이미지인지 확인하기위한 서버 측 유효성 검사
  • 다음 r - 유니 루트를 사용하여 데이터 프레임에서 UDF (사용자 정의 함수)를 해결하는 방법은 무엇입니까?