2016-07-06 1 views
-1

複数回保存されたカテゴリ名を取得しようとしています。名前をフェッチするには、名前をグループ化して複数回表示しないようにする必要がありますが、私は前に述べた方法でそれをやってみましたが、これまで失敗しました。 私はここでひどく間違った何かをしていると確信しています。なぜ私はそれをグループ化できないのかを見つけることができません。 何か助けていただければ幸いです。ありがとう。'列名'によるグループが機能していないようです

$valsubcat=mysqli_query($conn,"SELECT categoryid 
           FROM subcategorymaster 
           WHERE subcatid=$valitem1[0]"); 

while($valsubcat1=mysqli_fetch_array($valsubcat)) 
{ 
    $valcat=mysqli_query($conn,"SELECT CategoryName 
           FROM categorymaster 
           WHERE categoryid=$valsubcat1[0] 
           GROUP BY CategoryName"); 
    while($valcat1=mysqli_fetch_array($valcat)) 
    { 
     echo "<tr><td>".$valcat1[0]."</td></tr>"; 
    } 
} 
+0

は、あなたがして、グループを削除し、代わりにDISTINCT SELECTやってみましたJOINを使用して1つのクエリにそれを減らすことができますか? –

+0

生データの例、現在取得している結果、および必要なものを表示できますか? Group Byは選択ごとに特異な結果を返します。しかし、それはループで実行している。同じカテゴリが複数のクエリで表示される場合は、その複製が作成されます。たぶん、IDがリストにあるすべてのCategoryNameを選択し、すべてのクエリの結合された結果セットでGroup ByまたはDistinctを使用してください。 –

+0

良い悲しみ。 JOINを参照してください! – Strawberry

答えて

3

あなたは

$sql = "SELECT DISTINCT scm.categoryid, cm.CategoryName 
     FROM subcategorymaster as scm 
      LEFT JOIN categorymaster cm ON cm.categoryid = scm.categoryid 
     WHERE scm.subcatid = {$valitem1[0]}"); 
+0

@Strawberryタイプミス修正ありがとうございます – RiggsFolly

+0

私はそのようにする方法がわかりませんので、私はちょうどそれらのもののアウトをループしました –

+0

phpMyAdminまたは何かでこのクエリをよくテストしてくださいあなたがしようとしていたと確信していることを確認してください。もしうまくいけば、PHPを修正して結果を使用してください。 – RiggsFolly

関連する問題