2

やあみんな、ナビゲーションにページを保持する page_names というデータベース テーブルがあります。そのテーブル内には、メイン ナビゲーションの場合は 0 の parentid があり、数字がある場合はその親の子です。

テーブル ( where ispublished = 1) からすべての行を選択する必要がありますが、そのナビゲーション ページに子があることを示すために、0 または数値に設定される「haschild」と呼ばれる別の識別子がデータセットに必要です。私はphpの配列でこれを行うことを考えましたが、それを設定したほうがよいことに気付きました。

同じテーブルに参加して値を設定し、選択ステートメントを選択しようとしましたが、必要なものを達成できないようです。これは簡単なことのように思えますが、私は立ち往生しています。これが私がいる場所であり、私はそれが近くにさえないことを知っています.

    SELECT p.* , coalesce( pp.parentid, 0 ) AS haschild
    FROM page_names p
    LEFT JOIN page_names pp ON p.id = pp.parentid
    WHERE p.ispublished =1
    AND pp.ispublished =1
    ORDER BY p.orderout
4

2 に答える 2

0

子の数を数えることでこれを行うことができるはずです。その数が 0 より大きい場合は、子があります。このようなものが動作するはずです:

SELECT p.*, count(pp.id) AS children
FROM page_names p
LEFT JOIN page_names pp ON p.id = pp.parentid
WHERE p.ispublished = 1
AND pp.ispublished = 1
GROUP BY p.id
ORDER BY p.orderout
于 2013-09-05T16:41:58.203 に答える