【发布时间】:2016-10-25 13:29:59
【问题描述】:
我已加入三个表进行查询。问题是显示每个班级名称然后是狗,但没有将狗名链接到特定节目。它在每个节目中显示相同的狗名列表。我尝试在我的 dogs 表中使用 show_id 来执行此操作,并将其链接到显示表中的 show_id。
三张表分别是:shows、results、dogs。
谁能帮帮我?
<?php
if(isset($_GET['s_id'])) {
$the_show_id = $_GET['s_id'];
$view_query = "UPDATE shows SET show_view_count = show_view_count + 1 WHERE show_id = $the_show_id ";
$send_query = mysqli_query($connection, $view_query);
if(!$send_query) {
die("query failed" );
}
if(isset($_SESSION['user_role']) && $_SESSION['user_role'] == 'admin' ) {
$query = "SELECT * FROM shows WHERE show_id = $the_show_id ";
} else {
$query = "SELECT * FROM shows WHERE show_id = $the_show_id AND show_status = 'published' ";
}
$select_all_shows_query = mysqli_query($connection,$query);
if(mysqli_num_rows($select_all_shows_query) < 1) {
echo "<h1 class='text-center'>No shows available</h1>";
} else {
while($row = mysqli_fetch_assoc($select_all_shows_query)) {
$show_name = $row['show_title'];
$show_author = $row['show_author'];
$show_date = $row['show_date'];
$show_content = $row['show_content'];
?>
<h1 class="page-header">
Shows
</h1>
<!-- First Blog Post -->
<h2>
<a href="#"><?php echo $show_name ?></a>
</h2>
<p class="lead">
by <a href="index.php"><?php echo $show_author ?></a>
</p>
<h4>Show Date: <span class="glyphicon glyphicon-time"> </span>
<? php echo $show_date ?></h4>
<hr>
<div class="row">
<div class="col-xs-6 col-sm-3"><h4>Class Name</h4></div>
<div class="col-xs-6 col-sm-2"><h4>Placement</h4></div>
<div class="col-xs-6 col-sm-7"><h4>Dog Name</h4></div>
</div><hr>
<?php
$query = "SELECT result.class_name, result.placement, dogs.dog_name
FROM result
INNER JOIN dogs on result.resultID = dogs.resultIDD
INNER JOIN shows on dogs.show_id = shows.show_id
WHERE dog_name NOT LIKE 'absent' GROUP BY shows.show_id";
$result = mysqli_query($connection, $query) or trigger_error("Query Failed! SQL: $query - Error: ". mysqli_error($connection), E_USER_ERROR);
if($result) {
while($row = mysqli_fetch_assoc($result)) {
$dog_name = $row['dog_name'];
$placement = $row['placement'];
$class_name = $row['class_name'];
?>
<div class="row">
<div class="col-xs-6 col-sm-3"><p><?php echo $class_name ?></p></div>
<div class="col-xs-6 col-sm-2"><p><?php echo $placement ?></p></div>
<div class="col-xs-6 col-sm-7"><p><?php echo $dog_name ?></p></div>
</div>
<?php
}
}
}
?>
【问题讨论】:
-
查询必须显示错误,因为在 where 条件之后您没有在 where 条件中使用别名,它必须像 dogs.dog_name。
-
没有错误唯一发生的事情是每个节目都列出了所有狗,而不是每个节目特定的狗
-
在条件完成后尝试使用 GROUP BY shows.show_id 告诉我它返回什么?
-
为了测试它,我插入了 4 个结果和 4 条狗,查询列出了它们,但显示 1 和 2 仍然有相同的结果和狗,它不是显示每个显示对应的结果和狗?跨度>
-
我现在已经包含了所有的代码
标签: php sql inner-join