select query

  • Hi everyone,

    I need your help to solve my problem, a simple yet little bit complicated query condition.

    Here's the scenario.

    There's a table (Teacher_Student) that contains id (refer to teacher_student id), teacher_name & student name.

    Note this table is not normalized.

    ex. Teacher1 have student1,student2,student3 & student4.....

    ex. Teacher2 have student1,student2,student3 & student4.....

    this table contains records between teacher & student relationship.

    Another table (Teacher_Student_Classes) that contains dayId,teacher_name,student_name,date & classes(subject).

    ex. Teacher1 handle many classes(subjects)

    ex. Every class have many students.

    Now i want to create a query that shows how many number of students attended the class of teacher1 from one month.

    ex. teacher1 have a total 0f 20 students.

    teacher2 have a total of 50 studens.

    example results:

    Jan-1 Jan-2 Jan-3 .........

    teacher1 20 19 15

    teacher2 50 45 30

    The results something like a calendar type.

    thanks in advance. hope that my messages help you to understand my problem.

  • alex_pangcats (7/1/2009)


    Hi everyone,

    Another table (Teacher_Student_Classes) that contains dayId,teacher_name,student_name,date & classes(subject).

    ex. Teacher1 handle many classes(subjects)

    ex. Every class have many students.

    Now i want to create a query that shows how many number of students attended the class of teacher1 from one month.

    ex. teacher1 have a total 0f 20 students.

    teacher2 have a total of 50 studens.

    example results:

    Jan-1 Jan-2 Jan-3 .........

    teacher1 20 19 15

    teacher2 50 45 30

    The results something like a calendar type.

    thanks in advance. hope that my messages help you to understand my problem.

    SELECT Date,

    (select count(student_name) from Teacher_Student_Classes where teacher_name=t1 and date = 'jan') AS [t1],

    (select count(student_name) from Teacher_Student_Classes where teacher_name=t2 and date = 'Feb') AS [t2],

    (select count(student_name) from Teacher_Student_Classes where teacher_name=t3 and date = 'Mar') AS [t3]

    FROM Teacher_Student_Classes

    GROUP BY Date

    Tanx 😀

  • Please post table definitions, sample data and desired output. Read this to see the best way to post this to get quick responses.

    http://www.sqlservercentral.com/articles/Best+Practices/61537/

    Gail Shaw
    Microsoft Certified Master: SQL Server, MVP, M.Sc (Comp Sci)
    SQL In The Wild: Discussions on DB performance with occasional diversions into recoverability

    We walk in the dark places no others will enter
    We stand on the bridge and no one may pass
  • Seems like Eswin and alex_pangcats are in same class:

    http://www.sqlservercentral.com/Forums/Topic746129-338-1.aspx

  • No Florian its just that i couldn't solves alex's problem so i thought i will make it mine............since i didn't see many people viewing this post........

    Tanx 😀

  • Eswin (7/2/2009)


    No Florian its just that i couldn't solves alex's problem so i thought i will make it mine............since i didn't see many people viewing this post........

    All Alex needs to do is post the information Gail requested and he'll get the help he is looking for Eswin.

  • alex_pangcats (7/1/2009)


    Hi everyone,

    I need your help to solve my problem, a simple yet little bit complicated query condition.

    Here's the scenario.

    There's a table (Teacher_Student) that contains id (refer to teacher_student id), teacher_name & student name.

    Note this table is not normalized.

    ex. Teacher1 have student1,student2,student3 & student4.....

    ex. Teacher2 have student1,student2,student3 & student4.....

    this table contains records between teacher & student relationship.

    Another table (Teacher_Student_Classes) that contains dayId,teacher_name,student_name,date & classes(subject).

    ex. Teacher1 handle many classes(subjects)

    ex. Every class have many students.

    Now i want to create a query that shows how many number of students attended the class of teacher1 from one month.

    ex. teacher1 have a total 0f 20 students.

    teacher2 have a total of 50 studens.

    example results:

    Jan-1 Jan-2 Jan-3 .........

    teacher1 20 19 15

    teacher2 50 45 30

    The results something like a calendar type.

    thanks in advance. hope that my messages help you to understand my problem.

    Alex,

    You're a brand new poster on this forum and you may not be aware of a couple of problems with your post. Hopefully, this will clarify why people are asking you for more detail in the manner that they're asking.

    This problem isn't a difficult one but, like the others, I'm not clear on things like the following...

    Note this table is not normalized.

    ex. Teacher1 have student1,student2,student3 & student4.....

    ex. Teacher2 have student1,student2,student3 & student4.....

    Since you said that "this table is not normalized", we can envision many ways that the data could be constructed in the table including a CSV column much like you posted above. Rather than wasting our time and your's trying to solve a problem that isn't clearly defined, folks have asked you for the CREATE TABLE statement for each of the two tables along with some examples of data in a readily consumable format. It's also important that you accurately post what the final output should look like compared to the sample data.

    The data being in readily consumable format is very important because most of us like to test our solutions for folks like you before we post them but we don't have a lot of time to create data or reformat data you've provided (remember that all of us do this for free and out of the goodness of our hearts). Further, both the CREATE TABLE and the readily consumable data provide absolute clarity about the problem... it lets us know what all the datatypes are and provides a very good example of your environment.

    With that and the fact that we're actually interested in helping you solve your problem, please take a look at the article at the first link in my signature below. If you were to post the table creation statements and data in the readily consumable format outlined in that article, you'd be amazed at how fast someone will come up with an answer for you.

    --Jeff Moden


    RBAR is pronounced "ree-bar" and is a "Modenism" for Row-By-Agonizing-Row.
    First step towards the paradigm shift of writing Set Based code:
    ________Stop thinking about what you want to do to a ROW... think, instead, of what you want to do to a COLUMN.

    Change is inevitable... Change for the better is not.


    Helpful Links:
    How to post code problems
    How to Post Performance Problems
    Create a Tally Function (fnTally)

Viewing 8 posts - 1 through 7 (of 7 total)

You must be logged in to reply to this topic. Login to reply