2016-08-11 3 views
0

MySQL에 대한 지식이 기본입니다. 1.20 필드 값의 합계가 MySQL 쿼리에서 도달 한 행을 반환합니다.

  • 필드 합계를 : 양
  • 위해 expirydate에 의해
  • 그 합계에게 주어진 양의 값

    • 주어진 값에 도달 할 때 나는 모든 행을 반환하는 쿼리를 작성하려면 테이블 :

      id name  expirydate amount 
      1 name1 11-08-16  0.20  
      2 name2 10-08-16  1.50 
      3 name3 08-08-16  1.00 
      

      나는 ID 3, 2 ORDER BY의 결과가 필요합니다 만료일.

    +0

    더 자세히 설명해 주시겠습니까? 또한 예상되는 결과는 무엇입니까? – 1000111

    +0

    개념은 내가 지갑 금액을 충전했다, 모든 지갑 금액은 만기 날짜입니다, 만약 내가 금액을 인출 금액을 사용했다, 그래서 내가 행 ID의 최소 도달 금액 싶습니다. –

    +0

    그리고 예상되는 결과는 무엇입니까? 행 ID :'3,2'? – 1000111

    답변

    0

    당신이 PHP를 사용하는 경우 MySQL user defined variables

    SET @n := 1.2; 
    
    SELECT 
    t.id, 
    t.name, 
    t.expirydate, 
    t.amount 
    FROM 
    (
        SELECT 
        *, 
        @bal := @bal + amount AS runningAmount, 
        IF(@bal >= @n, @doneHere := @doneHere + 1 , @doneHere) AS whereToStop 
        FROM table_amount 
        CROSS JOIN (SELECT @bal := 0.0 , @doneHere := 0) var 
        ORDER BY expirydate 
    ) AS t 
    WHERE t.whereToStop <= 1 
    

    WORKING DEMO

    +0

    joomla mysql에서이 작업이 가능합니다 –

    +0

    원시 쿼리는 어디에서나 작동해야합니다. 나는 joomla에 대해 아무것도 모릅니다. – 1000111

    +0

    미안 해요, 쿼리를 수정하여 사용자 ID, 상태를 추가해야합니까? 검색어로 작성하는 방법 –

    0

    참조하여이 작업을 수행 할 수, 당신은 쿼리의 모든 결과를 얻으려면 다음 루프를 사용할 수 있습니다. 쿼리는 결과를 얻고 while 루프를 통해 모든 레코드를 표시 할 수 있습니다.

    <?php 
    $query = mysqli_query($db, "SELECT * FROM table WHERE amount >= 1.2 ORDER BY expirydate"); 
    while($array = mysqli_fetch_array($query)){ 
         echo $row['name'].' '.$row['amount'].' '.$row['expirydate'].'<br>'; 
    
    
         } 
    ?> 
    
    관련 문제