-1
で、私はその構造を持つテーブルを持っている:SQLを選択し、再帰的に同じテーブル
pedido_venda_restaurante:
idpedido_venda_restaurante
、インデックスPKidpedido_venda_restaurante_principal
、FK(ポイントidpedido_venda_restaurante
へ同じテーブルの)codigo_pv_interno
varchar型UNIQUE
私は目的は、クエリがすべての行を返す必要があり、ユーザが入力したcodigo_pv_interno
であるの問い合わせ製:
- が
codigo_pv_interno
が入力したが、 idpedido_venda_restaurante_principal
は、codigo_pv_interno
が入力された行のidpedido_venda_restaurante_principal
と等しくなります。idpedido_venda_restaurante_principal
は、codigo_pv_interno
が入力された行のidpedido_venda_restaurante
と等しくなります。 (存在する場合)、クエリがSELECT idpedido_venda_restaurante ,codigo_pv_interno ,idpedido_venda_restaurante_principal FROM pedido_venda_restaurante WHERE idpedido_venda_restaurante IN (SELECT pedido_origem.idpedido_venda_restaurante FROM pedido_venda_restaurante AS pedido_origem WHERE pedido_origem.codigo_pv_interno = '003') OR idpedido_venda_restaurante IN (SELECT idpedido_venda_restaurante FROM pedido_venda_restaurante WHERE idpedido_venda_restaurante_principal = (SELECT idpedido_venda_restaurante_principal FROM pedido_venda_restaurante WHERE codigo_pv_interno = '003')) OR idpedido_venda_restaurante IN (SELECT idpedido_venda_restaurante FROM pedido_venda_restaurante WHERE idpedido_venda_restaurante = (SELECT idpedido_venda_restaurante_principal FROM pedido_venda_restaurante WHERE codigo_pv_interno = '003')) OR idpedido_venda_restaurante_principal = (SELECT pedido_origem.idpedido_venda_restaurante FROM pedido_venda_restaurante AS pedido_origem WHERE pedido_origem.codigo_pv_interno = '003');
実はこのクエリがすでに動作し、リターン(存在する場合)(存在する場合)、、、父親が子どもを自分自身を返し、兄弟なければならないことを意味
SQLの私の知識が少ないため、それを行う効率的な方法が存在するはずです。
を検索したい他のテーブルとのプロセスを参照してください:[なぜ私が提供しなければなりません非常に単純なSQLクエリであると思われるMCVE?](https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to -me-to-be-a-very-simple-sql-query) – Strawberry