2016-06-16 8 views
1

私のプロジェクトでは、私のようなクエリがあります。レコードを選択してください条件1が条件2に従いました

$mainquery="SELECT * 
      FROM project 
      WHERE ProjectType='Current Projects' and Status='In Progress' 
      order by projectid"; 

$mainquery="SELECT * 
      FROM project 
      WHERE ProjectType='Current Projects' and Status='Not Started' 
      order by projectid"; 

は、今私は両方を組み合わせたいとステータス= =ステータス「進行中」とし、「未開始」すべてのレコードをしたいです。私はこれを試した。

$mainquery="SELECT * 
      FROM project 
      WHERE ProjectType='Current Projects' and (Status='In Progress' or Status='Not Started') 
      order by projectid"; 

しかし、これはStatus = 'In Progress'とStatus = 'Not Started'を組み合わせた結果を示します。私はまずStatus = 'In Progress'のすべてのレコードを、その後Status = 'Not Started'のすべてのレコードを必要とします。

+1

結果を並べ替える方法を尋ねていますか?そうであれば、この 'ORDER BY Status = 'In Progress' DESC、projectid' – AgRizzo

+1

を '... ORDER BY status、projectid;に変更すると、projectidのASC順の' In Progress 'と表示されます。 projectidのASCオーダー –

答えて

-1
SELECT * FROM project WHERE ProjectType='Current Projects' and Status='In Progress' order by projectid 
UNION ALL 
SELECT * FROM project WHERE ProjectType='Current Projects' and Status='Not Started' order by projectid 

上記はあなたの最初の条件を持つレコードを与えると、両方のクエリの列数を設けられた第二の条件と レコードは同じまま。

SELECT * FROM project WHERE ProjectType='Current Projects' and (Status='In Progress' OR Status='Not Started') order by projectid 

上記のクエリは、あなたのケースでも動作するはずです。

1

これらの線に沿って何かが便利かもしれません

SELECT * 
     FROM project 
     WHERE ProjectType='Current Projects' and (Status='In Progress' or 
     Status='Not Started') 
     order by case when Status like 'In Progress' then 0 else 1 end, Status 

REF:何を言うことを意味することは、あなたがステータスを持つすべての結果を取得しているということであればhttps://dba.stackexchange.com/questions/96446/mysql-order-by-first-condition-in-where-clause

0
$mainquery="SELECT * FROM project WHERE ProjectType='Current Projects' and 
      (Status='In Progress' or Status='Not Started') 
      order by Status <> 'Not Started',projectid"; 
0
$mainquery="SELECT * 
     FROM project 
     WHERE ProjectType='Current Projects' and (Status='In Progress' or Status='Not Started') 
     order by Status, projectid"; 
+2

'... ORDER BYステータス、projectid;' not projectid、status –

0

=「進行中」、ステータス=「開始していない」、は、をインターリーブし、 "projectid" 。

むしろあなたが最初にして、「進行中」の結果は、(両方ともPROJECTIDに基づいてソートされた)「未開始」を参照したい場合、あなたは次のいずれかの操作を行う必要があります


$ mainquery =
" WHERE ProjectType = '現在のプロジェクト' と
(ステータス= '進行中' やステータス= '未開始')状況によって
順序を、PROJECTIDプロジェクト
* FROM
を選択"; (「未開始」の前に「進行中」、アルファベット順昇順、すなわち)

これは最初の状況に基づいて検索結果をソートしますし、同じステータスを持つ結果の中に、それはに基づいてソートされます彼らの "projectid" は数値的に(昇順)。

関連する問題