sql >> データベース >  >> RDS >> Sqlserver

SQL を使用してサブカテゴリを表示する

    テーブルに戻って自己結合して、子の実際の親を見つけます。

    SELECT        c1.CategoryID, c2.ParentCategoryID, c1.Name, c2.Name as ParentName, c1.Published, c1.Deleted, c1.PictureID
    FROM          Nop_Category c1
    JOIN          Nop_Category c2 on c1.ParentCategoryId = c2.CategoryId
    WHERE        (c1.Deleted = 0)  
    AND          (c1.Published = 1)  
    AND          (c1.ParentCategoryID = 10)
    

    これにより、カテゴリ「コンピューター」の両方の子が返されます。それはあなたが探しているものですか?

    もちろん、これを逆にして、特定の親のすべての子またはすべての親からのすべての子を表示することもできます:

    SELECT c.*, p.* -- shortened, but you should pick specific columns
    
    FROM Nop_Category p -- parent
    JOIN Nop_Category c ON c.ParentCategoryId = p.CategoryId -- children
    
    WHERE p.ParentCategoryId = 0 -- all top level parents
    
    
    SELECT c.*, p.* -- shortened, but you should pick specific columns
    
    FROM Nop_Category p -- parent
    JOIN Nop_Category c ON c.ParentCategoryId = p.CategoryId -- children
    
    WHERE p.CategoryId = 10 -- only the "Computers" category
    

    または、カテゴリ「コンピューター」の子だけが必要な場合は、ParentCategoryId を 10 に変更します

    SELECT        CategoryID, ParentCategoryID, Name, Published, Deleted, PictureID  
    FROM          Nop_Category  
    WHERE        (Deleted = 0)   
    AND          (Published = 1)   
    AND          (ParentCategoryID = 10)
    



    1. Laravel移行テーブルはすでに存在しますが、古いものではなく新しいものを追加したい

    2. 同一のクエリの複数のプラン

    3. SQLiteOpenHelper onCreateメソッドが呼び出されたとき?

    4. OracleSQLで1970UTC以降のミリ秒のタイムスタンプを取得するにはどうすればよいですか?