Ага вообще круто, добавил еще немного.... как так получилось сам в шоке)))) PHP: <?php require_once 'connection.php'; // Create connection $conn = mysqli_connect($server, $user, $password, $database); mysqli_query($conn,"SET CHARACTER SET 'utf8'"); mysqli_query($conn,"SET SESSION collation_connection ='utf8_unicode_ci'"); // Check connection if (!$conn) { die("Connection failed: " . mysqli_connect_error()); } echo "Connected successfully"; $datey = date('Y-m-d H:i:s'); $datev = date('H:i:s'); $sql ="UPDATE prohod as pr, (SELECT id FROM prohod WHERE propusk='0006' ORDER BY id DESC LIMIT 1) as src SET pr.status = 0, pr.time_vih='".$datev."', pr.date_vih = '".$datey."', pr.time_ar=TIMEDIFF('".$datey."', pr.data) WHERE pr.id = src.id;"; if (mysqli_query($conn, $sql)) { echo "Update successfully"; } else { echo "Error: " . $sql . "<br>" . mysqli_error($conn); } mysqli_close($conn); ?> щас голову ломаю, как соеденить две таблицы, но что б первый столбец состоял строго из значений первой таблицы первая таблица Код (Text): SELECT fio FROM fio_table вторая таблица Код (Text): SELECT propusk, status, time_vh, time_vih, time_ar FROM prohod WHERE data > SUBDATE(CURDATE(), 2) or status = 1 --- Добавлено --- общее поле propusk --- Добавлено --- Это надо временные таблицы штудировать?
left берет за основу одну таблицу и пересение со второй, мне в первом столбце нужна только первая таблица полностью без второй. Из второй таблицы заполняю остальные столбцы --- Добавлено --- пытаюсь сделать сначала временную таблицу и из нее формировать в php
Если делаю через left join то получается Код (Text): select ft.fio, pr.propusk, pr.status, pr.time_vh, pr.time_vih, pr.time_ar from fio_table as ft left join prohod as pr on ft.propusk=pr.propusk Петров Пётр Петрович 003 0 NULL 00:00:00 NULL Елисеев Климент Сергеевич 0006 0 15:18:37 00:00:00 NULL Петров Пётр Петрович 003 0 NULL 00:00:00 NULL Елисеев Климент Сергеевич 0006 0 15:28:40 00:00:00 NULL Елисеев Климент Сергеевич 0006 0 17:45:18 00:00:00 NULL Елисеев Климент Сергеевич 0006 1 13:58:06 09:00:24 NULL Елисеев Климент Сергеевич 0006 0 09:45:54 NULL NULL Елисеев Климент Сергеевич 0006 0 09:46:30 09:47:13 NULL Елисеев Климент Сергеевич 0006 0 09:52:17 09:52:23 00:00:06 Елисеев Климент Сергеевич 0006 0 10:21:20 10:27:23 00:06:03 Сидоров Сидор Сидорович NULL NULL NULL NULL NULL Хренова Гадя Петрович NULL NULL NULL NULL NULL Цветкова Ляля Вячеславовна NULL NULL NULL NULL NULL Хохлова Силика Яковлевна NULL NULL NULL NULL NULL Герасимова Надежда Михаиловна NULL NULL NULL NULL NULL Артемьева Полианна Рудольфовна NULL NULL NULL NULL NULL Маслова Эльмира Геласьевна NULL NULL NULL NULL NULL Некрасов Эрик Аркадьевич NULL NULL NULL NULL NULL Назаров Абрам Владимирович NULL NULL NULL NULL NULL Бобров Емельян Макарович NULL NULL NULL NULL NULL Князев Михаил Матвеевич NULL NULL NULL NULL NULL Дмитриев Денис Валерьевич NULL NULL NULL NULL NULL hghfhf NULL NULL NULL NULL NULL апвпвапвпа NULL NULL NULL NULL NULL пересечение в первом столбце надо убрать --- Добавлено --- если делаю по последним заходам: Код (Text): select ft.fio, pr.propusk, pr.status, pr.time_vh, pr.time_vih, pr.time_ar from fio_table as ft left join prohod as pr on ft.propusk=pr.propusk where data > SUBDATE(CURDATE(), 2) or status = 1 то не все фио участвуют Елисеев Климент Сергеевич 0006 1 13:58:06 09:00:24 NULL Елисеев Климент Сергеевич 0006 0 09:45:54 NULL NULL Елисеев Климент Сергеевич 0006 0 09:46:30 09:47:13 NULL Елисеев Климент Сергеевич 0006 0 09:52:17 09:52:23 00:00:06 Елисеев Климент Сергеевич 0006 0 10:21:20 10:27:23 00:06:03
не туда мысль идет...... не все могут входить сегодня, но отображаться должные все..... --- Добавлено --- надо две тамблицы соеденить причем первый столбец только фио перечиляет, а с другой таблицы только заполнение остальных стобцов
Код (Text): select pr.data, pr.propusk, pr.status, pr.time_vh, pr.time_vih, pr.time_ar, pr.date_vih, ft.fio from fio_table as ft left join prohod as pr on ft.propusk=pr.propusk where data > SUBDATE(CURDATE(), 2) or status = 1 2019-06-09 00:00:00 0006 1 13:58:06 09:00:24 NULL 2019-06-11 00:00:00 Елисеев Климент Сергеевич 2019-06-11 00:00:00 0006 0 09:45:54 NULL NULL NULL Елисеев Климент Сергеевич 2019-06-11 00:00:00 0006 0 09:46:30 09:47:13 NULL 2019-06-11 00:00:00 Елисеев Климент Сергеевич 2019-06-11 00:00:00 0006 0 09:52:17 09:52:23 00:00:06 2019-06-11 00:00:00 Елисеев Климент Сергеевич 2019-06-11 10:21:20 0006 0 10:21:20 10:27:23 00:06:03 2019-06-11 10:27:23 Елисеев Климент Сергеевич --- Добавлено --- так?
Код (Text): select status, time_vh, time_vih, time_ar, data, date_vih from prohod where data > CURDATE() or status = 1 Из prohod выбрал нужное. тк на базе есть охрана она уходит на след утро и должна выходить. status time_vh time_vih time_ar data date_vih 1 09:45:54 NULL NULL 2019-06-11 00:00:00 NULL 1 16:28:23 NULL NULL 2019-06-12 16:28:23 NULL
Код (Text): CREATE TEMPORARY TABLE `temp_table` ( `id` INT NOT NULL AUTO_INCREMENT, `fio` VARCHAR(255), `propusk` VARCHAR(255), `status` VARCHAR(255), `time_vh` VARCHAR(255), `time_vih` VARCHAR(255), `time_ar` VARCHAR(255), PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; INSERT INTO sotr.temp_table (fio, propusk) SELECT fio, propusk FROM sotr.fio_table; SELECT * from temp_table Сделал временную таблицу со всеми полями, как щас вторую таблицу запихать? id fio propusk status time_vh time_vih time_ar 1 Петров Пётр Петрович 003 NULL NULL NULL NULL 2 Сидоров Сидор Сидорович 005 NULL NULL NULL NULL 3 Хренова Гадя Петрович 000000 NULL NULL NULL NULL 4 Цветкова Ляля Вячеславовна 0001 NULL NULL NULL NULL 5 Хохлова Силика Яковлевна 0002 NULL NULL NULL NULL 6 Герасимова Надежда Михаиловна 0003 NULL NULL NULL NULL 7 Артемьева Полианна Рудольфовна 0004 NULL NULL NULL NULL 8 Маслова Эльмира Геласьевна 0005 NULL NULL NULL NULL 9 Елисеев Климент Сергеевич 0006 NULL NULL NULL NULL 10 Некрасов Эрик Аркадьевич 0007 NULL NULL NULL NULL 11 Назаров Абрам Владимирович 0008 NULL NULL NULL NULL 12 Бобров Емельян Макарович 0009 NULL NULL NULL NULL 13 Князев Михаил Матвеевич 0010 NULL NULL NULL NULL 14 Дмитриев Денис Валерьевич 1000000 NULL NULL NULL NULL 15 hghfhf 5354345 NULL NULL NULL NULL 16 апвпвапвпа 3456546 NULL NULL NULL NULL --- Добавлено --- Код (Text): CREATE TEMPORARY TABLE `temp_table` ( `id` INT NOT NULL AUTO_INCREMENT, `fio` VARCHAR(255), `propusk` VARCHAR(255), `status` VARCHAR(255), `time_vh` VARCHAR(255), `time_vih` VARCHAR(255), `time_ar` VARCHAR(255), PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; INSERT INTO sotr.temp_table (fio, propusk) SELECT fio, propusk FROM sotr.fio_table; INSERT INTO sotr.temp_table (status, time_vh, time_vih, time_ar) select propusk, status, time_vh, time_vih, time_ar from prohod where data > CURDATE() or status = 1; SELECT * from temp_table; добавляет данные в конец талицы, как сделать что б добавляла в те же строки по propusk
АВЕ САЛАТ-ЦЕЗАРЬ ))))))) Код (Text): CREATE TEMPORARY TABLE `temp_table` ( `id` INT NOT NULL AUTO_INCREMENT, `propusk` VARCHAR(255), `status` VARCHAR(255), `time_vh` VARCHAR(255), `time_vih` VARCHAR(255), `time_ar` VARCHAR(255), PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; INSERT INTO sotr.temp_table (propusk, status, time_vh, time_vih, time_ar) select propusk, status, time_vh, time_vih, time_ar from prohod where data > CURDATE() or status = 1; SELECT * FROM fio_table LEFT OUTER JOIN temp_table ON fio_table.propusk = temp_table.propusk ORDER BY fio;
PHP: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="refresh" content="5"; charset="utf-8"> <title>Проходная</title> </head> <?php include('head.php');?> <tr> <td colspan="2"><font size="5"><center>ФИО</td> <td width="50"><font size="5"><center>Статус</td> <td width="130"><font size="5"><center>Время входа</td> <td width="150"><font size="5"><center>Время выхода</td> <td width="200"><font size="5"><center>Время пребывания</td> </tr> <?php require_once 'connection.php'; // подключаем скрипт $link = mysqli_connect($host, $user, $password, $database) or die("Ошибка " . mysqli_error($link)); mysqli_query($link,"SET CHARACTER SET 'utf8'"); mysqli_query($link,"SET SESSION collation_connection ='utf8_unicode_ci'"); $query ="CREATE TEMPORARY TABLE `temp_table` ( `id` INT NOT NULL AUTO_INCREMENT, `propusk` VARCHAR(255), `status` VARCHAR(255), `time_vh` VARCHAR(255), `time_vih` VARCHAR(255), `time_ar` VARCHAR(255), PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; INSERT INTO sotr.temp_table (propusk, status, time_vh, time_vih, time_ar) select propusk, status, time_vh, time_vih, time_ar from prohod where data > CURDATE() or status = 1; SELECT ft.fio, temp_table.status, temp_table.time_vh, temp_table.time_vih, temp_table.time_ar FROM fio_table as ft LEFT OUTER JOIN temp_table ON ft.propusk = temp_table.propusk ORDER BY fio;"; $result = mysqli_query($link, $query) or die("Ошибка " . mysqli_error($link)); if($result) { $rows = mysqli_num_rows($result); // количество полученных строк echo ""; for ($i = 0 ; $i < $rows ; ++$i) { $row = mysqli_fetch_row($result); echo "<tr>"; for ($j = 0 ; $j < 5 ; ++$j) echo "<td colspan=2><font size=5>$row[$j]</td ><td></td>"; echo "</tr>"; } echo ""; // очищаем результат mysqli_free_result($result); } mysqli_close($link); ?> </table> </body> </html> Хелп где ошибка не вижу, mysql говорит в строке с insert into в myphpadmin запрос проходит без сучка..... Ошибка You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'INSERT INTO sotr.temp_table (propusk, status, time_vh, time_vih, time_ar) selec' at line 10
как тогда? PHP: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="refresh" content="5"; charset="utf-8"> <title>Проходная</title> </head> <?php include('head.php');?> <tr> <td colspan="2"><font size="5"><center>ФИО</td> <td width="50"><font size="5"><center>Статус</td> <td width="130"><font size="5"><center>Время входа</td> <td width="150"><font size="5"><center>Время выхода</td> <td width="200"><font size="5"><center>Время пребывания</td> </tr> <?php require_once 'connection.php'; // подключаем скрипт $link = mysqli_connect($host, $user, $password, $database) or die("Ошибка " . mysqli_error($link)); mysqli_query($link,"SET CHARACTER SET 'utf8'"); mysqli_query($link,"SET SESSION collation_connection ='utf8_unicode_ci'"); $query ="CREATE TEMPORARY TABLE `temp_table` ( `id` INT NOT NULL AUTO_INCREMENT, `propusk` VARCHAR(255), `status` VARCHAR(255), `time_vh` VARCHAR(255), `time_vih` VARCHAR(255), `time_ar` VARCHAR(255), PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;"; $query. ="INSERT INTO temp_table (propusk, status, time_vh, time_vih, time_ar) select propusk, status, time_vh, time_vih, time_ar from prohod where data > CURDATE() or status = 1; SELECT ft.fio, temp_table.status, temp_table.time_vh, temp_table.time_vih, temp_table.time_ar FROM fio_table as ft LEFT OUTER JOIN temp_table ON ft.propusk = temp_table.propusk ORDER BY fio;"; $result = mysqli_query($link, $query) or die("Ошибка " . mysqli_error($link)); if($result) { $rows = mysqli_num_rows($result); // количество полученных строк echo ""; for ($i = 0 ; $i < $rows ; ++$i) { $row = mysqli_fetch_row($result); echo "<tr>"; for ($j = 0 ; $j < 5 ; ++$j) echo "<td colspan=2><font size=5>$row[$j]</td ><td></td>"; echo "</tr>"; } echo ""; // очищаем результат mysqli_free_result($result); } mysqli_close($link); ?> </table> </body> </html> как их разделить?
Просто уж напишу. Тебе всего то надо было, сделать фильтр в таблице prohod. Где ты вытягивал бы последние данные входа конкретного человека. То есть одну строку на конкретного человека, если такого не было, результат был бы null. И привязать этот запрос с таблицей fio. Все. А ты тут нагородил, я даже лезть не хочу уже.
Наконец та)) такие темы надо вычленять с первого поста. Объяснять что-либо человеку не имеющему элементарной базовой подготовки - себе дороже.