В базе существует две таблицы: 1 содержит только время (время1, время2, и время3), 2 содержит записи по дням содержащие также время1, время2 и время3.
Нужно произвести выборку из таблицы 1 того времени, которое не существует в определённый день в таблице 2.
То есть если в таблице 2 есть запись на 01.05 на время1 и время3, то выбрать из таблицы 1 надо время2.
Спустя 14 минут, 36 секунд (30.04.2012 - 21:50) vagrand написал(а):
Я думаю что будет больше пользы если ты покажешь show create table для этих таблиц, а так же примеры их заполнения. А то твои объяснения вышли уж больно путанными
Спустя 14 часов, 5 минут, 37 секунд (1.05.2012 - 11:55) alex2539 написал(а):
Таблица 1:
CREATE TABLE `regtime` (
`regtime` varchar(255) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8
Таблица 2:
CREATE TABLE `book` (
`day` int(25) NOT NULL,
`month` int(25) NOT NULL,
`year` int(25) NOT NULL,
`time` varchar(255) NOT NULL,
`name` varchar(255) NOT NULL,
`age` varchar(255) NOT NULL,
`order_name` varchar(255) NOT NULL,
`phone` varchar(255) NOT NULL,
`email` varchar(255) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8
В таблице 2 в поле time содержится то же, что в таблице 1 regtime. Мне нужно выбрать из таблицы 1 те записи, которых нет в таблице 2. Пытался реализовать это данным способом:
Но если записей несколько, то не получается.
CREATE TABLE `regtime` (
`regtime` varchar(255) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8
Таблица 2:
CREATE TABLE `book` (
`day` int(25) NOT NULL,
`month` int(25) NOT NULL,
`year` int(25) NOT NULL,
`time` varchar(255) NOT NULL,
`name` varchar(255) NOT NULL,
`age` varchar(255) NOT NULL,
`order_name` varchar(255) NOT NULL,
`phone` varchar(255) NOT NULL,
`email` varchar(255) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8
В таблице 2 в поле time содержится то же, что в таблице 1 regtime. Мне нужно выбрать из таблицы 1 те записи, которых нет в таблице 2. Пытался реализовать это данным способом:
<?php
$result7 = mysql_query("SELECT time FROM book WHERE day='$day' AND month='$month'",$db);
$myrow7 = mysql_fetch_array($result7);
if (isset ($myrow7["time"]))
{$time = $myrow7["time"];
$result8 = mysql_query("SELECT regtime FROM regtime WHERE regtime <> '$time'", $db);
$myrow8 = mysql_fetch_array($result8);
do {printf ("<OPTION value='%s'>%s</OPTION>", $myrow8["regtime"], $myrow8["regtime"]);}
while ($myrow8 = mysql_fetch_array($result8));}
if (!isset ($myrow7["time"]))
{$result8 = mysql_query("SELECT regtime FROM regtime", $db);
$myrow8 = mysql_fetch_array($result8);
do {printf ("<OPTION value='%s'>%s</OPTION>", $myrow8["regtime"], $myrow8["regtime"]);}
while ($myrow8 = mysql_fetch_array($result8));}
?>
Но если записей несколько, то не получается.
Спустя 43 минуты, 29 секунд (1.05.2012 - 12:39) sergeiss написал(а):
alex2539 - тебе надо правильно "сджойнить" таблицы, чтобы всего один запрос был. Это 100%. Только я не буду советовать, как это сделать. Потому что на Постгре я бы сделал легко, но в Мускуле многое по-другому, что отличается от простого селекта. Уже много раз было, что по граблям прыгал.