我有一张存放所有志愿者的桌子,每位志愿者将被分配到一个合适的场地来开展活动。有一张桌子可以存放所有场地。
将志愿者的适当场地分配存储在venue_id
栏中。
table: venues
columns: id, venue_name
table: volunteers_2009
columns: id, lname, fname, etc.., venue_id
这是显示志愿者名单的功能,我遇到的问题是显示他们的场地分配。我从未使用过MySQL连接,因为这是我第一次将两个表连接在一起以获取我需要的相应信息。
所以我希望它转到志愿者_2009表,抓住venue_id,转到场地表,匹配volunteers_2009.venue_id to venues.id
,以显示venues.venue_name
,所以在列表中它将显示志愿者的场地分配
<?php
// -----------------------------------------------------
//it displays appropriate columns based on what table you are viewing
function displayTable($table, $order, $sort) {
$query = "select * from $table ORDER by $order $sort";
$result = mysql_query($query);
// volunteer's venue query
$query_venues = "SELECT volunteers_2009.venue_id, venues.venue_name FROM volunteers_2009 JOIN venues ON volunteers_2009.venue_id = venues.id";
$result_venues = mysql_query($query_venues);
if($_POST) { ?>
<table id="box-table-a">
<tr>
<th>Name</th>
<?php if($table == 'maillist') { ?>
<th>Email</th>
<?php } ?>
<?php if($table == 'volunteers_2008' || $table == 'volunteers_2009') { ?>
<th>Comments</th>
<?php } ?>
<?php if($table == 'volunteers_2009') { ?>
<th>Interests</th>
<th>Venue</th>
<?php } ?>
<th>Edit</th>
</tr>
<tr>
<?php
while($row = mysql_fetch_array($result))
{
$i = 0;
while($i <=0)
{
print '<td>'.$row['fname'].' '.$row['lname'].'</td>';
if($table == 'maillist') {
print '<td><a href="mailto:'.strtolower($row['email']).'">'.strtolower($row['email']).'</a></td>';
}
if($table == 'volunteers_2008' || $table == 'volunteers_2009') {
print '<td><small>'.substr($row['comments'], 0, 32).'</small></td>';
}
if($table == 'volunteers_2009') {
print '<td><small>1) '.$row['choice1'].'<br>2) '.$row['choice2'].'<br>3) '.$row['choice3'].'</small></td>'; ?>
<td> <?php
if($row_venues['venue_name'] != '') {
// print venue assigned
print $row_venues['venue_id'].' '.$row_venues['venue_name'].' ';
} else { print 'No Venue Assigned'; } ?>
</td> <?php
} ?>
<td><a href="?mode=upd&id=<?= $row[id] ?>&table=<?= $table ?>">Upd</a> / <a href="?mode=del&id=<?= $row[id] ?>&table=<?= $table ?>" onclick="return confirm('Are you sure you want to delete?')">Del</a></td> <?php
$i++;
}
print '</tr>';
}
print '</table>';
}
}
// -----------------------------------------------------
?>
答案 0 :(得分:0)
从场地选择field1,field2,field3,志愿者_2009志愿者_2009.venue_id = venues.id
答案 1 :(得分:0)
常规SQL LEFT外连接语法。
SELECT volunteers.id,volunteers.lname,volunteers.fname,volunteers.venue_id,venues.venue_name 来自Volunteers_2009 AS志愿者LEFT OUTER JOIN场地ON(Volunteers.venue_id = Venues.id)
答案 2 :(得分:0)
我无法添加任何评论,但语法 从场地选择field1,field2,field3,志愿者_2009志愿者_2009.venue_id =场所.id 只会给你志愿者一个场地;不是没有场地的人。