Select query for fetching records from two tables

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • padmaneha
    New Member
    • Sep 2008
    • 17

    Select query for fetching records from two tables

    Hi

    I have created two tables which are movies table and videos table

    Columns of movies table are movie id, movietitle, moviereviewid and the select statement which I have written to fetch count of reviews is as follows

    select movieid, count(movierevi ewid) as Moviereviewscnt from movies
    where moviereviewid >0

    columns of videos table are videoid, videoname and movievideoid and the select statment which I have written to fetch count of videos is as follows

    select movieid, count(videoid) as Vidoescnt from videos
    where videoid >0

    I want to write a select query to fetch all those movies which has got moviereviews and movievideos in a single table i.e. it should have
    movieid, moviename, moviereviewscnt and movievideoscnt

    In other words it should show only those movies which has reviews and videos which is >0
  • deepuv04
    Recognized Expert New Member
    • Nov 2007
    • 227

    #2
    Hi,
    Your requirement is not clear to me, it will be more clear if you can provide some sample data and output you want.

    Any way try the following query, probably will help you.

    [code=sql]
    select movieid, movietitle as moviename,
    count(movierevi ewid) as Moviereviewscnt ,
    count(videoid) as Vidoescnt
    from movies inner join
    videoid on videoid.movieid = movies.movieid
    where moviereviewid >0 and videoid > 0
    group by movies.movieid
    [/code]

    Thanks

    Comment

    • padmaneha
      New Member
      • Sep 2008
      • 17

      #3
      Hi

      Thanks for your response but the query which you gave doesnt work. It displays the same cnt for movie reviews and videoreviews

      Let me explain you in detail

      As I said I have got two tables like one is 'Food table' and the other one is the 'Videos' table

      Columns which I have created in 'Food' table are 'foodid' and 'blogcid'
      colcumns which I have created in Videos table are 'videoid, 'destid', 'videotitle'

      Common column for the above two tables are foodid and destid which has the same content id for inner join

      I need to fetch records of those foodids which has got blogs and videos

      For example

      Food id blog cid
      3 12356
      9 15265
      15 18963
      19 0
      13 22156

      videoid videotitle destid
      9 paneerpakora 3
      11 aloogobhi 9
      16 chinese chickensalad 15
      45 Chicken 19
      0 tomato soup 13

      From the above data I have to fetch only those records which has blogs and videos. In other words I need a select query to fetch records of those dishes alone which has blogs >0 and destid >0 which means that fetched foodids should have both blogs and videos it should fetch records which doesnt have blogs or videos.






      Originally posted by deepuv04
      Hi,
      Your requirement is not clear to me, it will be more clear if you can provide some sample data and output you want.

      Any way try the following query, probably will help you.

      [code=sql]
      select movieid, movietitle as moviename,
      count(movierevi ewid) as Moviereviewscnt ,
      count(videoid) as Vidoescnt
      from movies inner join
      videoid on videoid.movieid = movies.movieid
      where moviereviewid >0 and videoid > 0
      group by movies.movieid
      [/code]

      Thanks

      Comment

      • deepuv04
        Recognized Expert New Member
        • Nov 2007
        • 227

        #4
        Hi,
        thanks for the information provided, but missed with the expected output.
        can you give the sample output you are expecting.

        I just changed the query to match with the sample data given, here is the query.
        [code=sql]
        select videoid,videoti tle,count(blogc id),count(desti d)
        from food inner join
        video on video.destid = food.foodid
        where blogcid > 0 and destid > 0
        group by videoid,videoti tle
        [/code]

        thanks

        Comment

        • padmaneha
          New Member
          • Sep 2008
          • 17

          #5
          Originally posted by deepuv04
          Hi,
          thanks for the information provided, but missed with the expected output.
          can you give the sample output you are expecting.

          I just changed the query to match with the sample data given, here is the query.
          [code=sql]
          select videoid,videoti tle,count(blogc id),count(desti d)
          from food inner join
          video on video.destid = food.foodid
          where blogcid > 0 and destid > 0
          group by videoid,videoti tle
          [/code]

          thanks

          Hi

          Thank you for your response. Query doesnt give the expected result.

          Here is the sample data :

          Food id blog cid
          3 12356
          3 12357
          3 12358
          9 15265
          15 18963
          15 18964
          19 0
          13 22156

          videoid videotitle destid
          9 paneerpakora 3
          10 paneerpakora 3
          11 aloogobhi 9
          16 chinese chickensalad 15
          17 chinese chickensalad 15
          18 chinese chickensalad 15
          45 Chicken 19
          0 tomato soup 13


          Here is the expected result:

          Output should display as given

          Food id blogcnt Videocnt
          3 3 2
          9 1 1
          15 2 3
          13 1 1

          On executing the query it should display only those records for which blogs and videos are existing. It should not dipslay the records there is no videos or if there is no blogs. In other words it should fetch only those records for which
          videos and blogs are posted, displaying the count of blogs and count of videos as given above

          Comment

          • deepuv04
            Recognized Expert New Member
            • Nov 2007
            • 227

            #6
            Hi,
            Based on the sample data given here is the query you want.

            [CODE=SQL]
            create table Food( foodid int, blogcid int)

            insert into food
            select 3, 12356 union
            select 3, 12357 union
            select 3, 12358 union
            select 9, 15265 union
            select 15, 18963 union
            select 15, 18964 union
            select 19, 0 union
            select 13, 22156


            create table videos( videoid int,videotitle varchar(20),des tid int)

            insert into videos
            SELECT 9,'paneerpakora ', 3 UNION
            SELECT 10 ,'paneerpakora' , 3 UNION
            SELECT 11 ,'aloogobhi', 9 UNION
            SELECT 16 ,'chinese chickensalad', 15 UNION
            SELECT 17 ,'chinese chickensalad', 15 UNION
            SELECT 18 ,'chinese chickensalad', 15 UNION
            SELECT 45 ,'Chicken', 19 UNION
            SELECT 0 ,'tomato soup', 13


            SELECT FOODID,COUNT(DI STINCT BLOGCID),COUNT( DISTINCT VIDEOID)
            FROM FOOD INNER JOIN
            VIDEOS ON VIDEOS.DESTID = FOOD.FOODID
            WHERE BLOGCID > 0 AND DESTID > 0
            GROUP BY FOODID
            [/CODE]

            Thanks

            Comment

            • padmaneha
              New Member
              • Sep 2008
              • 17

              #7
              Originally posted by deepuv04
              Hi,
              Based on the sample data given here is the query you want.

              [CODE=SQL]
              create table Food( foodid int, blogcid int)

              insert into food
              select 3, 12356 union
              select 3, 12357 union
              select 3, 12358 union
              select 9, 15265 union
              select 15, 18963 union
              select 15, 18964 union
              select 19, 0 union
              select 13, 22156


              create table videos( videoid int,videotitle varchar(20),des tid int)

              insert into videos
              SELECT 9,'paneerpakora ', 3 UNION
              SELECT 10 ,'paneerpakora' , 3 UNION
              SELECT 11 ,'aloogobhi', 9 UNION
              SELECT 16 ,'chinese chickensalad', 15 UNION
              SELECT 17 ,'chinese chickensalad', 15 UNION
              SELECT 18 ,'chinese chickensalad', 15 UNION
              SELECT 45 ,'Chicken', 19 UNION
              SELECT 0 ,'tomato soup', 13


              SELECT FOODID,COUNT(DI STINCT BLOGCID),COUNT( DISTINCT VIDEOID)
              FROM FOOD INNER JOIN
              VIDEOS ON VIDEOS.DESTID = FOOD.FOODID
              WHERE BLOGCID > 0 AND DESTID > 0
              GROUP BY FOODID
              [/CODE]

              Thanks

              Hi

              Thanks a lot for your response the query worked out

              Comment

              Working...