SQL puzzle

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • gimme_this_gimme_that@yahoo.com

    #1

    SQL puzzle

    I have three queries.

    If the counts returned from the first and second queries are equal
    then the third query is executed.

    Is it possible to get this information in a single query without
    writing a procedure?

    Thanks.


    SELECT COUNT(*) FROM NAV_DIV_GROUP NDG INNER JOIN EMP_GROUP EG ON
    NDG.GROUP_ID=EG .GROUP_ID
    WHERE EG.EMP_ID=? AND NDG.NAV_DIV_ID= ?

    SELECT GROUP_COUNT FROM NAV_DIV WHERE NAV_DIV_ID=?

    SELECT NAV_DIV_ID, NAV_PAGE_ID, COLUMN_NO, POSITION_NO, GROUP_COUNT,
    TYPE, BOBLET_NAME, ADMIN_NAME, PATH,
    BLURB FROM NAV_DIV WHERE NAV_DIV_ID=?

  • Lennart

    #2
    Re: SQL puzzle

    gimme_this_gimm e_that@yahoo.co m wrote:
    I have three queries.
    >
    If the counts returned from the first and second queries are equal
    then the third query is executed.
    >
    Is it possible to get this information in a single query without
    writing a procedure?
    >
    Thanks.
    >
    >
    SELECT COUNT(*) FROM NAV_DIV_GROUP NDG INNER JOIN EMP_GROUP EG ON
    NDG.GROUP_ID=EG .GROUP_ID
    WHERE EG.EMP_ID=? AND NDG.NAV_DIV_ID= ?
    >
    SELECT GROUP_COUNT FROM NAV_DIV WHERE NAV_DIV_ID=?
    >
    SELECT NAV_DIV_ID, NAV_PAGE_ID, COLUMN_NO, POSITION_NO, GROUP_COUNT,
    TYPE, BOBLET_NAME, ADMIN_NAME, PATH,
    BLURB FROM NAV_DIV WHERE NAV_DIV_ID=?
    >
    I suspect that this is not what you are looking for, but just in case:

    SELECT NAV_DIV_ID, NAV_PAGE_ID, COLUMN_NO, POSITION_NO, GROUP_COUNT,
    TYPE, BOBLET_NAME, ADMIN_NAME, PATH,BLURB
    FROM NAV_DIV
    WHERE NAV_DIV_ID=?
    AND (SELECT COUNT(*)
    FROM NAV_DIV_GROUP NDG INNER JOIN EMP_GROUP EG
    ON NDG.GROUP_ID=EG .GROUP_ID
    WHERE EG.EMP_ID=? AND NDG.NAV_DIV_ID= ?)
    = ( SELECT GROUP_COUNT FROM NAV_DIV WHERE NAV_DIV_ID=? )

    Comment

    • --CELKO--

      #3
      Re: SQL puzzle

      Untested:

      SELECT nav_div_id, nav_page_id, column_no, position_no, group_cnt,
      type, boblet_name, admin_name, path, blurb
      FROM Nav_Div AS D1
      WHERE nav_div_id = ?
      AND (SELECT COUNT(*)
      FROM nav_div_group AS NDG, emp_group AS EG
      WHERE NDG.group_id = EG.group_id
      AND EG.emp_id = ?
      AND NDG.nav_div_id = D1.nav_div_id)
      = (SELECT MAX(group_cnt) -- Max to keep it scalar
      FROM Nav_Div
      WHERE nav_div_id = nav_div_id);

      "type" is too vague to be a data element -- what kind of type? Trees?
      Shoes? Animals? Can you explain the logical difference differences
      between "nav_page_i d" and a mere "nav_page" or "nav_page_n br"? I made
      some guesses about what each ? should be.

      Comment

      • gimme_this_gimme_that@yahoo.com

        #4
        Re: SQL puzzle

        Thanks Lennart. This worked perfectly.


        Also, thanks CELKO.


        Comment

        Working...