Запрос на присоединение и что мне с ним делать для правильного отображения данных? - PullRequest
0 голосов
/ 14 октября 2008

У меня есть таблица, в которой хранятся все волонтеры, и каждому волонтеру будет назначено соответствующее место для проведения мероприятия. Есть столик, в котором хранятся все заведения.

В столбце 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, поэтому в списке будет отображаться назначение места волонтера. *

alt text

<?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>';
    }
}
// -----------------------------------------------------
?>

Ответы [ 3 ]

0 голосов
/ 14 октября 2008

Общий SQL LEFT Синтаксис внешнего соединения.

ВЫБРАТЬ волонтеры.ид, волонтеры.имя, волонтеры.имя, волонтеры.веній, venues.venue_name FROM Volunteers_2009 AS Добровольцы покинули внешнее объединение Места включены (Volunteers.venue_id = Venues.id)

0 голосов
/ 14 октября 2008

Я не могу добавить комментарий, но синтаксис выберите field1, field2, field3 из мест проведения мероприятия, волонтеры_2009, где волонтеры_2009.venue_id = venues.id только даст вам добровольцев с местом проведения; не те без места.

0 голосов
/ 14 октября 2008

выберите field1, field2, field3 из мест, волонтеры_2009, где волонтеры_2009.venue_id = venues.id

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...