我是否需要在SQL中进行左,自然或简单连接?

时间:2018-03-27 00:05:11

标签: php mysql sql join marketplace

我是PHP编码的新手,只是尝试修复我的网站上的一些功能,这些功能是首席开发人员遗留下来的。

网站[Vloggi]是一个市场。所以我需要在assignments page中显示工作海报的名称。我有工作的表只有ID,而不是名称。

所以我需要一个加入,但我已经尝试过,它打破了整个网站。

SQL有17个表,我需要显示表3中包含的用户名(usr_name),表7中包含的组织(usrg_orgname)以及表14中的作业发布用户(vlop_usr_id)详细信息。

主键是users.usr_id,链接到users_gor.usrg_usr_id和vlog-ops.vlog_usr_id。

表3:users usr_id,usr_email,usr_password,usr_fbuser,usr_fbtoken, usr_name ,usr_loc_name,usr_loc_lat1,usr_loc_lon1,usr_loc_lat2,usr_loc_lon2,usr_status,usr_gor,usr_vgr,usr_token,usr_regtoken,

表7:users_gor usrg_usr_id,usrg_creditops,usrg_creditvlog,usrg_creditvlogette,usrg_destination,的 usrg_orgname 下,usrg_orgtype,usrg_location,usrg_website,usrg_jobtitle,usrg_phone,usrg_address1,usrg_address2,usrg_state,usrg_postcode,usrg_country

表14:vlog-ops vlop_id,vlop_title,vlop_description,vlop_tags,vlop_deadline,vlop_quantity,vlop_quantityposted,vlop_vser_id,的 vlop_usr_id 下,vlop_loc_name,vlop_loc_lat1,vlop_loc_lon1,vlop_loc_lat2,vlop_loc_lon2,vlop_campaign,vlop_rules,vlop_tips,vlop_status

所以在main.php中我编写了以下Sql查找 在main.php中,我有以下SQL查找:

$sql = "SELECT * FROM users_gor WHERE usrg_usr_id = ".$db->quote($user_info['usr_id'])." LIMIT 1";
$rows = $db->select($sql);
$users_gor = $rows[0];

$sql = "SELECT * FROM users_vgr WHERE usrv_usr_id = ".$db->quote($user_info['usr_id'])." LIMIT 1";
$rows = $db->select($sql);
$users_vgr = $rows[0];

$sql = "SELECT * FROM users WHERE usr_id = ".$db->quote($user_info['usr_id'])." LIMIT 1";
$rows = $db->select($sql);
$users = $rows[0];

$sql = "SELECT * FROM vlog-ops WHERE vlop_usr_id ".$db->quote($user_info['usr_id'])." LIMIT 1";
$rows = $db->select($sql);
$users = $rows[0];

$sql = "SELECT usr_name AS vlop_usr_name FROM users WHERE usr_id = ".$db->quote($user_info['usr_id'])." LIMIT 1";
$rows = $db->select($sql);
$users = $rows[0];

然后在页面模板中,我写了

<?php echo $vlop['vlop_vser_id'] ?>
<?php echo $vlop['vlop_usr_name'] ?>

第一个起作用,第二个起作用。我最终想要的是在表格中显示用户名和组织名称。

每当我尝试JOIN或NATURAL JOIN或LEFT JOIN时,它都会中断,整个网站都会空白。

对新手的任何帮助都将得到一百万的感谢。

1 个答案:

答案 0 :(得分:0)

使用JOIN时,您需要指定加入它们的方式。 在下面的查询中,我假设您正在寻找问题中粗体字段。

$query='SELECT u.usr_name, g.usrg_orgname, v.vlop_usr_id  FROM users u 
JOIN vlog-ops v on u.usr_id = v.vlop_usr_id 
JOIN users_gor g on u.usr_id = g.usrg_usr_id';

我相信我得到了正确的字段的名称,但如果不是只用正确的替换它们。

获取数据后,您只需遍历结果:

$result = mysqli_query($connection, $query);
while($row = mysqli_fetch_assoc($result)) {
    echo 'User name = ' . $row['u.usr_name'];
    echo 'Org name = ' . $row['g.usrg_orgname'];
    echo 'Job posting user id = ' . $row['v.vlop_usr_id'];
}