MariaDB - breaking up a multi join into CTEs












0















So I have the following query:



SELECT 
i.mongodb_id
FROM
display_list_lists dll
JOIN
display_lists dl
ON
dll.display_list_id = dl._id
JOIN
list_items li
ON
dll.list_id = li.list_id
JOIN
items i
ON
li.item_id = i._id
WHERE
dl.mongodb_id = ?
AND
dl.account_id = ?


since, I only need the display_lists._id in order to then find the other details, would it be better to somehow use CTEs instead?



Broken up, it would look like this:



SELECT
_id
FROM
display_lists dl
WHERE
dl.mongodb_id = ?
AND
dl.account_id = ?;



SELECT
*
FROM
display_list_lists dll
WHERE
dll.display_list_id = ?; // previous _id



SELECT
*
FROM
list_items li
WHERE
li.list_id IN (?); // use list ids from previous results



SELECT
*
FROM
items i
WHERE
i._id IN (?); // use item ids from previous results








share



























    0















    So I have the following query:



    SELECT 
    i.mongodb_id
    FROM
    display_list_lists dll
    JOIN
    display_lists dl
    ON
    dll.display_list_id = dl._id
    JOIN
    list_items li
    ON
    dll.list_id = li.list_id
    JOIN
    items i
    ON
    li.item_id = i._id
    WHERE
    dl.mongodb_id = ?
    AND
    dl.account_id = ?


    since, I only need the display_lists._id in order to then find the other details, would it be better to somehow use CTEs instead?



    Broken up, it would look like this:



    SELECT
    _id
    FROM
    display_lists dl
    WHERE
    dl.mongodb_id = ?
    AND
    dl.account_id = ?;



    SELECT
    *
    FROM
    display_list_lists dll
    WHERE
    dll.display_list_id = ?; // previous _id



    SELECT
    *
    FROM
    list_items li
    WHERE
    li.list_id IN (?); // use list ids from previous results



    SELECT
    *
    FROM
    items i
    WHERE
    i._id IN (?); // use item ids from previous results








    share

























      0












      0








      0








      So I have the following query:



      SELECT 
      i.mongodb_id
      FROM
      display_list_lists dll
      JOIN
      display_lists dl
      ON
      dll.display_list_id = dl._id
      JOIN
      list_items li
      ON
      dll.list_id = li.list_id
      JOIN
      items i
      ON
      li.item_id = i._id
      WHERE
      dl.mongodb_id = ?
      AND
      dl.account_id = ?


      since, I only need the display_lists._id in order to then find the other details, would it be better to somehow use CTEs instead?



      Broken up, it would look like this:



      SELECT
      _id
      FROM
      display_lists dl
      WHERE
      dl.mongodb_id = ?
      AND
      dl.account_id = ?;



      SELECT
      *
      FROM
      display_list_lists dll
      WHERE
      dll.display_list_id = ?; // previous _id



      SELECT
      *
      FROM
      list_items li
      WHERE
      li.list_id IN (?); // use list ids from previous results



      SELECT
      *
      FROM
      items i
      WHERE
      i._id IN (?); // use item ids from previous results








      share














      So I have the following query:



      SELECT 
      i.mongodb_id
      FROM
      display_list_lists dll
      JOIN
      display_lists dl
      ON
      dll.display_list_id = dl._id
      JOIN
      list_items li
      ON
      dll.list_id = li.list_id
      JOIN
      items i
      ON
      li.item_id = i._id
      WHERE
      dl.mongodb_id = ?
      AND
      dl.account_id = ?


      since, I only need the display_lists._id in order to then find the other details, would it be better to somehow use CTEs instead?



      Broken up, it would look like this:



      SELECT
      _id
      FROM
      display_lists dl
      WHERE
      dl.mongodb_id = ?
      AND
      dl.account_id = ?;



      SELECT
      *
      FROM
      display_list_lists dll
      WHERE
      dll.display_list_id = ?; // previous _id



      SELECT
      *
      FROM
      list_items li
      WHERE
      li.list_id IN (?); // use list ids from previous results



      SELECT
      *
      FROM
      items i
      WHERE
      i._id IN (?); // use item ids from previous results






      mysql join mariadb





      share












      share










      share



      share










      asked 3 mins ago









      A. LauA. Lau

      1012




      1012






















          0






          active

          oldest

          votes











          Your Answer








          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "182"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: false,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: null,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });














          draft saved

          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fdba.stackexchange.com%2fquestions%2f228509%2fmariadb-breaking-up-a-multi-join-into-ctes%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          0






          active

          oldest

          votes








          0






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes
















          draft saved

          draft discarded




















































          Thanks for contributing an answer to Database Administrators Stack Exchange!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fdba.stackexchange.com%2fquestions%2f228509%2fmariadb-breaking-up-a-multi-join-into-ctes%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          Liste der Baudenkmale in Friedland (Mecklenburg)

          Single-Malt-Whisky

          Czorneboh