连接表时获得重复结果

时间:2011-03-22 06:45:16

标签: php mysql

当我使用Select语句显示来自Mysql Db的数据时。我得到重复的价值观。如何解决这个问题?我的SQL查询是这样的:

$sql="SELECT r.hosteladmissionno,r.student_name,r.semester,
         m.billmonth,m.billyear,m.wastagecharge,b.exp_amount
  FROM  registration r, messexp m, blockexp b
  WHERE r.mess_type = '".$q."' AND r.mess_type=m.messtype AND r.status_flag=1";

2 个答案:

答案 0 :(得分:3)

您应该在查询中使用内部联接。否则,每个注册结果将与messexp的每个结果相结合......

$sql="SELECT registration.hosteladmissionno,
    registration.student_name,
    registration.semester,
    messexp.billmonth,
    messexp.billyear,
    messexp.wastagecharge,
    blockexp.exp_amount
FROM registration
INNER JOIN messexp ON (messexp.id_registration = registration.id)
INNER JOIN blockexp ON (blockexp.id_messexp = messexp.id)
 WHERE 
registration.mess_type = '".$q."' AND status_flag=1";

请注意,ON(...)将根据您的架构而改变

答案 1 :(得分:3)

您已交叉加入表格,因此您可以获得每个结果组合。 连接where子句中的表:

select tab1.column1, table2.column1
from tab1, tab2
where tab1.fkColumn = tab2.idColumn

将表格相互连接的列是什么?