如何在sql中选择3个表

时间:2015-10-19 08:09:22

标签: php mysql

 $sql=mysql_query("SELECT a.ssmid, a.image,b.ssmid,b.image,c.ssmid,c.image FROM a user_photos_offline INNER JOIN user_profile_pic b on a.ssmid = b.ssmid INNER JOIN user_family_photos c on a.ssmid = c.ssmid");

  while($row=mysql_fetch_assoc($sql)){
      echo $row['image'];
  }

我想从DB中选择所有图像,我有3个表,这些是表名user_photos_offlineuser_profile_picuser_family_photos,所有表的列名都是image

在3个表中,我有ssmid的相同列,现在我想为这3个表选择图像

2 个答案:

答案 0 :(得分:0)

要单独参考图像,请使用AS

SELECT 
  a.ssmid, a.image AS a_image, 
  b.ssmid, b.image AS b_image, 
  c.ssmid, c.image AS c_image
 FROM user_photos_offline a
 INNER JOIN user_profile_pic b on a.ssmid = b.ssmid 
 INNER JOIN user_family_photos c on a.ssmid = c.ssmid

在PHP中,您的索引将更改为这些标识符:

while($row=mysql_fetch_assoc($sql)){
     echo $row['a_image'];
     echo $row['b_image'];
     echo $row['c_image'];
}

答案 1 :(得分:0)

如果您的每个表ssmiduser_photos_offlineuser_profile_picuser_family_photos之间没有任何关系,则无需使用INNER JOIN。请改用UNION

$sql=mysql_query(
    "SELECT ssmid, image, CONCAT('folder1/', image) as image_filename FROM user_photos_offline
    UNION
    SELECT ssmid, image, CONCAT('folder2/', image) as image_filename FROM user_profile_pic
    UNION
    SELECT ssmid, image, CONCAT('folder3/', image) as image_filename FROM user_family_photos"
    );

while($row=mysql_fetch_assoc($sql)){
    echo $row['image'];
    echo $row['image_filename'];
}