From: Koon Yue Lam [mailto:[EMAIL PROTECTED] 

> Hi, here is the case:
> 
> one student may have more than one address, and one student 
> may have more than one phone number
> 
> so the db would be:
> 
> student
> ----------------
> student_id
> name
> age
> 
> address
> ---------------
> address_id
> student_id
> street_name
> 
> phone_num
> ------------------
> student_id
> num
> extension
> 
> the key of 3 tables are student_id
> 
> the problems is, when I want to query both student, address 
> and phone num, the sql will be
> 
> select * from student s, address a, phone_num n
> where s.student_id = a.sudent_id
> and s.student_id = n.student_id
> 
> it won't provide a nice result as data of student are 
> repeated in every row, address and phone_num's data are 
> repeated in certain rows
> The output is not suitable for reporting and may I ask what 
> is the better way of design to handle the above case ?

It's good DB design, but you need to not `select *' but the specific
fields you'd like.

An example of might be:

SELECT s.name, s.age, a.street_name, n.num, n.extension 
FROM students s 
JOIN address a ON a.student_id = s.student_id 
JOIN phone_num n ON n.student_id = s.student_id 

HTH!


-- 
Mike Johnson             Smarter Living, Inc.
Web Developer            www.smartertravel.com
[EMAIL PROTECTED]   (617) 886-5539


--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to