How could I select a column based on another column in mySQL?











up vote
1
down vote

favorite












The following script works fine. But I want to write it in one line rather than three lines. 'Size" is passed from my main program and its used here to test. Simply I want to get Price based on size.



Table columns :
LISTING_ID, PRICE_LARGE_PRICE, PRICE_SMALL_PRICE.



SET @Size = 'SMALL';

SELECT
PRICE_LARGE_PRICE,PRICE_SMALL_PRICE
INTO
@PRICE_LARGE_PRICE,@PRICE_SMALL_PRICE
FROM
prices
WHERE
PRICE_LISTING_ID = 60;

SET @ITEM_PRICE = (CASE @Size WHEN 'REGULAR' THEN @PRICE_LARGE_PRICE
WHEN 'SMALL' THEN @PRICE_SMALL_PRICE
ELSE null
END);

SELECT @ITEM_PRICE;


Any help is appreciated.










share|improve this question


























    up vote
    1
    down vote

    favorite












    The following script works fine. But I want to write it in one line rather than three lines. 'Size" is passed from my main program and its used here to test. Simply I want to get Price based on size.



    Table columns :
    LISTING_ID, PRICE_LARGE_PRICE, PRICE_SMALL_PRICE.



    SET @Size = 'SMALL';

    SELECT
    PRICE_LARGE_PRICE,PRICE_SMALL_PRICE
    INTO
    @PRICE_LARGE_PRICE,@PRICE_SMALL_PRICE
    FROM
    prices
    WHERE
    PRICE_LISTING_ID = 60;

    SET @ITEM_PRICE = (CASE @Size WHEN 'REGULAR' THEN @PRICE_LARGE_PRICE
    WHEN 'SMALL' THEN @PRICE_SMALL_PRICE
    ELSE null
    END);

    SELECT @ITEM_PRICE;


    Any help is appreciated.










    share|improve this question
























      up vote
      1
      down vote

      favorite









      up vote
      1
      down vote

      favorite











      The following script works fine. But I want to write it in one line rather than three lines. 'Size" is passed from my main program and its used here to test. Simply I want to get Price based on size.



      Table columns :
      LISTING_ID, PRICE_LARGE_PRICE, PRICE_SMALL_PRICE.



      SET @Size = 'SMALL';

      SELECT
      PRICE_LARGE_PRICE,PRICE_SMALL_PRICE
      INTO
      @PRICE_LARGE_PRICE,@PRICE_SMALL_PRICE
      FROM
      prices
      WHERE
      PRICE_LISTING_ID = 60;

      SET @ITEM_PRICE = (CASE @Size WHEN 'REGULAR' THEN @PRICE_LARGE_PRICE
      WHEN 'SMALL' THEN @PRICE_SMALL_PRICE
      ELSE null
      END);

      SELECT @ITEM_PRICE;


      Any help is appreciated.










      share|improve this question













      The following script works fine. But I want to write it in one line rather than three lines. 'Size" is passed from my main program and its used here to test. Simply I want to get Price based on size.



      Table columns :
      LISTING_ID, PRICE_LARGE_PRICE, PRICE_SMALL_PRICE.



      SET @Size = 'SMALL';

      SELECT
      PRICE_LARGE_PRICE,PRICE_SMALL_PRICE
      INTO
      @PRICE_LARGE_PRICE,@PRICE_SMALL_PRICE
      FROM
      prices
      WHERE
      PRICE_LISTING_ID = 60;

      SET @ITEM_PRICE = (CASE @Size WHEN 'REGULAR' THEN @PRICE_LARGE_PRICE
      WHEN 'SMALL' THEN @PRICE_SMALL_PRICE
      ELSE null
      END);

      SELECT @ITEM_PRICE;


      Any help is appreciated.







      mysql select case case-when






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Nov 21 at 15:30









      PCG

      85111




      85111
























          2 Answers
          2






          active

          oldest

          votes

















          up vote
          1
          down vote



          accepted










          Following may work.



          SET @Size = 'SMALL';

          SELECT
          PRICE_LARGE_PRICE,
          PRICE_SMALL_PRICE,
          CASE WHEN @Size = 'REGULAR' THEN PRICE_LARGE_PRICE
          WHEN @Size = 'SMALL' THEN PRICE_SMALL_PRICE
          END AS ITEM_PRICE
          INTO
          @PRICE_LARGE_PRICE,
          @PRICE_SMALL_PRICE,
          @ITEM_PRICE
          FROM
          prices
          WHERE
          PRICE_LISTING_ID = 60;





          share|improve this answer




























            up vote
            1
            down vote













            I think you want



            SELECT 
            IF(@size == 'SMALL', PRICE_SMALL_PRICE, PRICE_LARGE_PRICE) AS ITEM_PRICE
            FROM prices;





            share|improve this answer























              Your Answer






              StackExchange.ifUsing("editor", function () {
              StackExchange.using("externalEditor", function () {
              StackExchange.using("snippets", function () {
              StackExchange.snippets.init();
              });
              });
              }, "code-snippets");

              StackExchange.ready(function() {
              var channelOptions = {
              tags: "".split(" "),
              id: "1"
              };
              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',
              convertImagesToLinks: true,
              noModals: true,
              showLowRepImageUploadWarning: true,
              reputationToPostImages: 10,
              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%2fstackoverflow.com%2fquestions%2f53415405%2fhow-could-i-select-a-column-based-on-another-column-in-mysql%23new-answer', 'question_page');
              }
              );

              Post as a guest















              Required, but never shown

























              2 Answers
              2






              active

              oldest

              votes








              2 Answers
              2






              active

              oldest

              votes









              active

              oldest

              votes






              active

              oldest

              votes








              up vote
              1
              down vote



              accepted










              Following may work.



              SET @Size = 'SMALL';

              SELECT
              PRICE_LARGE_PRICE,
              PRICE_SMALL_PRICE,
              CASE WHEN @Size = 'REGULAR' THEN PRICE_LARGE_PRICE
              WHEN @Size = 'SMALL' THEN PRICE_SMALL_PRICE
              END AS ITEM_PRICE
              INTO
              @PRICE_LARGE_PRICE,
              @PRICE_SMALL_PRICE,
              @ITEM_PRICE
              FROM
              prices
              WHERE
              PRICE_LISTING_ID = 60;





              share|improve this answer

























                up vote
                1
                down vote



                accepted










                Following may work.



                SET @Size = 'SMALL';

                SELECT
                PRICE_LARGE_PRICE,
                PRICE_SMALL_PRICE,
                CASE WHEN @Size = 'REGULAR' THEN PRICE_LARGE_PRICE
                WHEN @Size = 'SMALL' THEN PRICE_SMALL_PRICE
                END AS ITEM_PRICE
                INTO
                @PRICE_LARGE_PRICE,
                @PRICE_SMALL_PRICE,
                @ITEM_PRICE
                FROM
                prices
                WHERE
                PRICE_LISTING_ID = 60;





                share|improve this answer























                  up vote
                  1
                  down vote



                  accepted







                  up vote
                  1
                  down vote



                  accepted






                  Following may work.



                  SET @Size = 'SMALL';

                  SELECT
                  PRICE_LARGE_PRICE,
                  PRICE_SMALL_PRICE,
                  CASE WHEN @Size = 'REGULAR' THEN PRICE_LARGE_PRICE
                  WHEN @Size = 'SMALL' THEN PRICE_SMALL_PRICE
                  END AS ITEM_PRICE
                  INTO
                  @PRICE_LARGE_PRICE,
                  @PRICE_SMALL_PRICE,
                  @ITEM_PRICE
                  FROM
                  prices
                  WHERE
                  PRICE_LISTING_ID = 60;





                  share|improve this answer












                  Following may work.



                  SET @Size = 'SMALL';

                  SELECT
                  PRICE_LARGE_PRICE,
                  PRICE_SMALL_PRICE,
                  CASE WHEN @Size = 'REGULAR' THEN PRICE_LARGE_PRICE
                  WHEN @Size = 'SMALL' THEN PRICE_SMALL_PRICE
                  END AS ITEM_PRICE
                  INTO
                  @PRICE_LARGE_PRICE,
                  @PRICE_SMALL_PRICE,
                  @ITEM_PRICE
                  FROM
                  prices
                  WHERE
                  PRICE_LISTING_ID = 60;






                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered Nov 21 at 19:42









                  Madhur Bhaiya

                  19.1k62236




                  19.1k62236
























                      up vote
                      1
                      down vote













                      I think you want



                      SELECT 
                      IF(@size == 'SMALL', PRICE_SMALL_PRICE, PRICE_LARGE_PRICE) AS ITEM_PRICE
                      FROM prices;





                      share|improve this answer



























                        up vote
                        1
                        down vote













                        I think you want



                        SELECT 
                        IF(@size == 'SMALL', PRICE_SMALL_PRICE, PRICE_LARGE_PRICE) AS ITEM_PRICE
                        FROM prices;





                        share|improve this answer

























                          up vote
                          1
                          down vote










                          up vote
                          1
                          down vote









                          I think you want



                          SELECT 
                          IF(@size == 'SMALL', PRICE_SMALL_PRICE, PRICE_LARGE_PRICE) AS ITEM_PRICE
                          FROM prices;





                          share|improve this answer














                          I think you want



                          SELECT 
                          IF(@size == 'SMALL', PRICE_SMALL_PRICE, PRICE_LARGE_PRICE) AS ITEM_PRICE
                          FROM prices;






                          share|improve this answer














                          share|improve this answer



                          share|improve this answer








                          edited Nov 22 at 15:07









                          PCG

                          85111




                          85111










                          answered Nov 21 at 17:10









                          Evert

                          40k1568123




                          40k1568123






























                              draft saved

                              draft discarded




















































                              Thanks for contributing an answer to Stack Overflow!


                              • 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.





                              Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


                              Please pay close attention to the following guidance:


                              • 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%2fstackoverflow.com%2fquestions%2f53415405%2fhow-could-i-select-a-column-based-on-another-column-in-mysql%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

                              What visual should I use to simply compare current year value vs last year in Power BI desktop

                              How to ignore python UserWarning in pytest?

                              Alexandru Averescu