|
|
|
| есть 3 таблицы. в первой содержится список дней недели с внешним индексом, выбирающем при щелчке на день соответсвующие записи из второй таблицы (info) для этого дня недели. php-страница извлекает эти записи по такому запросу:
if (isset($_GET['id'])) {
$colname_application = (get_magic_quotes_gpc()) ? $_GET['id'] : addslashes($_GET['id']);
}
mysql_select_db($database_applications, $applications);
$query_application = sprintf("SELECT id, timestart, timeend, techid, prepod, more, now, number FROM info WHERE dayid = %s ORDER BY timestart ASC", $colname_application);
$application = mysql_query($query_application, $applications) or die(mysql_error());
$row_application = mysql_fetch_assoc($application);
|
и размещает их в таблице, в повторяющейся области (записей, соответсвующих дню недели - несколько) :
<?php do { ?>
<tr>
<td><?php echo $row_application['timestart']; ?>-<?php echo $row_application['timeend']; ?> </td>
<td><?php echo $row_application['number']; ?></td>
<td>??????????тут безуспешно пытался выводить значение поля complect третьей таблицы???????????</td>
<td><?php echo $row_application['prepod']; ?></td>
<td><?php echo $row_application['more']; ?></td>
<td><?php echo $row_application['now']; ?></td>
</tr>
<?php } while ($row_application = mysql_fetch_assoc($application)); ?>
| А в третьей таблице (equipment) содержится список техники (первое поле - complect) и ключ id (второе поле), который соответсвует индексному полю воторой таблицы (techid). Пытался сделать чтобы таже страница, которая выполняет первый запрос и выводит данные в повторяющуюся облать, выводила и наименование техники из третьей таблицы (поле complect), соответвующее извлекаемому значению techid, но создать такой запрос не получилось :( - во всей колонке таблицы вывелись одинаковые значения комплекта оборудования. Кто-нибудь может помочь? | |
|
|
|
|
|
|
|
для: Zozo
(22.03.2009 в 18:02)
| | Покажи структуры всех таблиц, и по каким полям хочешь связать… | |
|
|
|
|
|
|
|
для: а-я
(22.03.2009 в 18:24)
| | таблица с наименованием техники equipment:
первичный ключ - поле Id
наименвоание техники - поле сomplect
таблица с информацией о технике в означенный день (info). Поля, извлекаемые по запросу, который я показал, - id, timestart, timeend, techid, prepod, more, now, dayid. Уникальный идентификатор-счётчик тут - id. Поле techid соответсвует записям таблицы с наименвоанием техники (его значения равны полю id таблицы equipment). И вот нужно извлечь значение поля complect из таблицы equipment, пользуясь имеющимся в ней идентификатором id, соответсвующим индексу techid, который я извлекаю из второй таблицы в запросе. | |
|
|
|
|
|
|
|
для: Zozo
(22.03.2009 в 18:42)
| |
SELECT i.*, e.complect
FROM info i LEFT JOIN equipment e ON i.techid = e.id
WHERE dayid = %s ORDER BY timestart ASC
|
| |
|
|
|
|
|
|
|
для: Trianon
(22.03.2009 в 18:47)
| | а без объединения записей никак? я с этими операторами раньше не работал.. | |
|
|
|
|
|
|
|
для: Zozo
(22.03.2009 в 19:03)
| | здесь нет объединения записей.
Здесь используется соединение таблиц.
И если Вы хотите вытаскивать данные из другой таблицы (как Вы описали в условии) - без соединения никак не обойтись.
Операция LEFT JOIN нестрашная. Куда менее страшная, чем запятая, которую обычно приводят в учебниках... | |
|
|
|
|
|
|
|
для: Trianon
(22.03.2009 в 19:09)
| | спасибо, попробую.. | |
|
|
|
|
|
|
|
для: Trianon
(22.03.2009 в 19:09)
| | Trianon спасибо за помощ. Много данных из таблиц я не извлекаю так что запрос работает не долго. | |
|
|
|
|
|
|
|
для: Zozo
(23.03.2009 в 09:58)
| | он в любом случае работает быстро.
Поскольку доступ ко второй таблице идет через индекс первичного ключа. | |
|
|
|