2016-06-16 8 views
0

내가 외래 키와 연결된 두 개의 테이블을 포함하는 MySQL의 데이터베이스가를 포함하는 도전 MySQL은 SELECT 질의를 내가 원하는 것은 마지막 Qte_tot, Designation, threshold_stock을 얻는 것입니다. threshold_stock> qte_tot 이 코드를 시도했는데 작동하지 않았습니다 :나는 주식 및 임계 값 bondary

여기
SELECT MvtStock_MatPr.id,idMatPr, Nom, threshold_stock, Qte_Tot 
FROM MvtStock_MatPr, MatPr 
WHERE MatPr.id=MvtStock_MatPr.idMatPr AND threshold_stock>Qte_Tot 

617,451,515,샘플 데이터 세트이다 ID, idMatPr BY

mysql> SELECT MvtStock_MatPr.id,idMatPr, Designation, threshold_stock, Qte_Tot FROM MvtStock_MatPr, MatPr WHERE MatPr.id=MvtStock_MatPr.idMatPr AND threshold_stock>Qte_Tot ORDER 

;

| 이드 | idMatPr | 지명 | threshold_stock | Qte_Tot |

| 1 | 1 | 바크라 | 120 | 10 |

| 2 | 2 | 지퍼 | 130 | 20 |

| 3 | 1 | 바크라 | 120 | 30 |

| 7 | 2 | 지퍼 | 130 | 50 | 세트

4 행 (0.00 초)

mysql> SELECT * FROM MatPr; 

| 이드 | 지정 | threshold_stock |

| 1 | 바크라 | 120 |

| 2 | 지퍼 | 130 | 세트

2 행 (0.00 초)

mysql> SELECT * FROM MvtStock_MatPr; 

| 이드 | DateMvt | Qte_Mvt | Qte_Tot | idMatPr |

| 1 | 2016-01-01 | 10 | 10 | 1 |

| 2 | 2016-02-02 | 20 | 20 | 2 |

| 3 | 2016-03-03 | 20 | 30 | 1 |

| 4 | 2016-03-03 | 100 | 130 | 1 |

| 5 | 2016-03-03 | 50 | 180 | 1 |

| 6 | 2016-03-03 | 20 | 200 | 1 |

| 7 | 2016-03-05 | 30 | 50 | 2 |

7 행 세트 (0.00 초)

내가 받고 싶습니다 :

| 이드 | idMatPr | 지명 | threshold_stock | Qte_Tot

| 3 | 1 | 바크라 | 120 | 30 |

| 7 | 2 | 지퍼 | 130 | 50 | + ---- + --------- + -------- + ------- + --------- +

감사합니다. 이 결과 세트에서 하나의 행을 선택하는 것입니다 : 당신의 문제가 무엇인지 당신의 기여

+0

하십시오 [편집] 귀하의 질문에 제목을. 그것은 당신이 직면하고 있거나 질문하고있는 실제 문제를 설명하는 것이어야하며, 검색 결과에서 미래의 독자에게 의미가있을만큼 구체적이어야합니다. * 나는 복잡한 쿼리를 가지고있다. * 그 점에 대해서는 전혀 쓸모가 없다. 실제로 누구 이건간에 쿼리가 복잡하다고 말할 수있다. 귀하의 질문은 너무 명확하지 않습니다; 두 테이블의 일부 샘플 데이터와 쿼리를 통해 샘플 데이터에서 얻고 자하는 출력이 도움이됩니다. –

답변

0

내가 완전히 따르는 것이 확실하지 않습니다 아래의 쿼리

Select m1.id,m1.idMatpr,m.threshold_stock,m.Qte_Tot 
From MvtStock_Matpr m1 join Matpr m 
On m1.idMatPr=m.id and m.threshold_stock>m1.Qte_Tot 
+0

도움이되지 않는 것은 내가 얻은 결과와 같은 결과를 낳는다. 4rows와 내가 물었 듯이 2 줄만 얻고 싶다. –

0

를 사용? 그렇다면 부질의가 문제를 해결합니까?

SELECT * 
FROM MatPr 
WHERE ID = (
    SELECT idMatPr 
    FROM MvtStock_MatPr, MatPr 
    WHERE MatPr.id = MvtStock_MatPr.idMatPr 
    AND threshold_stock > Qte_Tot 
    LIMIT 1 
) 

당신이 MatPr에서 불과 행을 선택합니다

는 당신을 위해이 일을합니까?

http://sqlfiddle.com/#!9/d4ef50/2

+0

아니요. 원하는 조건의 모든 MatPr을 가져 오지 마십시오. threshold_stock> Qte_Tot –

0

SELECT MatPr.* 
FROM MvtStock_MatPr, MatPr 
WHERE MatPr.id = MvtStock_MatPr.idMatPr 
    AND threshold_stock > Qte_Tot 
이 쿼리를보십시오 : 의미있는 뭔가를

select * from 
    (SELECT MvtStock_MatPr.id,idMatPr,Designation, threshold_stock, Qte_Tot 
    FROM MvtStock_MatPr join MatPr 
    on MatPr.id=MvtStock_MatPr.idMatPr 
    where threshold_stock>Qte_Tot 
    order by DateMvt desc 
    ) T 
group by T.idMatPr 
+0

또는 DateMvt 열이 datetime이 아니므로 MvtStock_MatPr.id desc를 사용하여 주문할 수 있으며 둘 이상의 행에서 반복 될 수 있습니다. –

+0

너무 가까웠습니다. 쿼리는 두 행을 가져 오지만 불필요한 행은 가져옵니다. MvtStoc_MatPr.id 1과 2가있는 행. MvtStock_MatPr.id 3 및 7이있는 행이 필요합니다. –

+0

방금 ​​해봤지만 MvtStock_MatPr.id ids 3 및 7이 표시되지만 열은 MvtStock_MatPr.id 대신 'id'로 이름이 바뀌므로 결과를 붙여 넣어 테이블에 잘못 삽입 된 데이터를 볼 수 있습니까? –