如果没有一些背景信息,我不知道如何表达我的问题。
我有两张表:账户和名册
账户id-PK员工姓名
名册名册ID-PKid-指向帐户表的FK链接星期一星期二等等。
我正在尝试在php中创建一个编辑表。
这是我当前输出的
$sql = "SELECT * FROM accounts LEFT OUTER JOIN rosters ON accounts.id=rosters.id
WHERE stafffname<>'admin' ORDER BY rosters.week_start ASC, accounts.stafffname ASC";
$result = $mysqli->query($sql);
if($result->num_rows > 0)
{
while($row = $result->fetch_assoc())
{
$comments = str_replace('+', '<br/>', $row['comments']);
$comments = str_replace('{', '<strong/>', $comments);
$comments = str_replace('}', '</strong/>', $comments);
echo '
<tr class><!-- 2nd row STAFF MEMBER 5-->
<td><!--Date Range-->
'.$row["stafffname"].'
'.$row["id"].'
</td>
<td><!--Date Range-->
'.date("d M Y", strtotime($row["week_start"])).'
</td>
<td><!--Mon Time-->
'.substr($row["mon_start"],0,5).' - '.substr($row["mon_end"],0,5).'
</td>
<td><!--Tue Time-->
'.substr($row["tue_start"],0,5).' - '.substr($row["tue_end"],0,5).'
</td>
<td><!--Wed Time-->
'.substr($row["wed_start"],0,5).' - '.substr($row["wed_end"],0,5).'
</td>
<td><!--Thu Time-->
'.substr($row["thu_start"],0,5).' - '.substr($row["thu_end"],0,5).'
</td>
<td><!--Fri Time-->
'.substr($row["fri_start"],0,5).' - '.substr($row["fri_end"],0,5).'
</td>
<td><!--Sat Time-->
'.substr($row["sat_start"],0,5).' - '.substr($row["sat_end"],0,5).'
</td>
<td><!--Comments-->
'.$comments.'
</td>
<td><!--Comments-->
<a href="rcreate.php?id='.$row["id"].'&tabid=3" class="btn btn-danger btn-sm">Add</a>
<a href="redit.php?id='.$row["id"].'&tabid=3&rosterID='.$row["rosterID"].'" class="btn btn-warning btn-sm">Edit</a>
</td>
</tr>
';
}
查询运行良好,它列出了具有Null值的用户。
我想做的是:有一个添加和编辑按钮连接到行,但当名册表中有空值时,账户表中的id不会传递给添加或编辑按钮。
有没有办法将id传递给添加和编辑按钮?
我需要其他类型的查询吗。
我尝试过交叉联接和其他组合,但它只在两个表中都有数据时列出ID。
感谢
您当前使用的是LEFT OUTER JOIN
,accounts
表位于左侧,rosters
表位于右侧。这意味着SQL将返回来自accounts
的所有记录,以及来自rosters
的任何匹配记录(如果找到(。
听起来您想要使用FULL OUTER JOIN
,它将返回两个表中的记录,并在它们符合where子句中的条件时将它们连接起来。