Forum Webscript.Ru
Общие => Базы данных => Тема начата: =Женек= от 26 Декабря 2005, 07:26:23
-
Есть таблица A с полями number_e и FIO (фамилия человека и его уникальные номер).
Есть таблица B c полями number_e, TITLE и date (номер человека и название работы и срок исполнения).
Мне нужно выбрать из таблицы B все что сделал например "Иванов" (в таблице A есть запись с полем FIO "иванов") за последнюю неделю.
Как сделать? (Два варианта желательно для MySQL и InterBase)
-
MySQL:
ИМХО
дату начало недели придется вычислить внешними средствами(языком программирования)
SELECT a.fio, b.title FROM `a`, `b` WHERE a.number_e = b.number_e && a.number_e = \'номер иванова\' && BETWEEN NOW() && \'результат вычисления\'
С наступающим ;)
-
Тот ж вопрос мне надо выбрать из двух таблиц.
Делаю такой запрос но не работет (Вообще я его правильно делаю?):
$sql = mysql_query("select proect.name_org,
proect.cat,
proect.who,
proect.fio,
proect.dolznost,
proect.tel,
proect.facs,
proect.mail,
proect.www,
proect.adres,hod.id_org AS org2,hod.fio AS fio2,hod.dolznost AS dolznost2,
hod.tel AS tel2,hod.facs AS facs2,hod.mail AS mail2,hod.www AS www2,
hod.adres AS adres2 FROM proect,hod");
$result = mysql_query($sql);
while($row = mysql_fetch_array($result)) {
-
Voron
а где звязь между таблицами ?
читаем не отрываясь от монитора Народная самодеятельность — связи таблиц в MySQL (http://phpclub.ru/detail/article/2000-12-06)
-
Связь мне нужна была только к таблице proect/ По этому связи делал вот как между name_org и id_org что не так?
#
# Структура таблицы `client`
#
CREATE TABLE `client` (
`id` int(11) NOT NULL auto_increment,
`id_org` text NOT NULL,
`fio` text NOT NULL,
`dolznost` text NOT NULL,
`tel` text NOT NULL,
`facs` text NOT NULL,
`mail` text NOT NULL,
`www` text NOT NULL,
`adres` text NOT NULL,
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=25 ;
# --------------------------------------------------------
#
# Структура таблицы `hod`
#
CREATE TABLE `hod` (
`id` int(11) NOT NULL auto_increment,
`id_org` text NOT NULL,
`chislo` text NOT NULL,
`zvonok` text NOT NULL,
`contact` text NOT NULL,
`rez` text NOT NULL,
`dop` text NOT NULL,
`sost` text NOT NULL,
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=11 ;
#
# Структура таблицы `proect`
#
CREATE TABLE `proect` (
`id` int(11) NOT NULL auto_increment,
`name_org` text NOT NULL,
`cat` text NOT NULL,
`who` text NOT NULL,
`fio` text NOT NULL,
`dolznost` text NOT NULL,
`tel` text NOT NULL,
`facs` text NOT NULL,
`mail` text NOT NULL,
`www` text NOT NULL,
`adres` text NOT NULL,
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=12 ;
-
Voron
связь по полю с значением text это что-то новое.
Прочти пожалуйста cтатью которую я тебе дал выше.
Потом не злоупотребляй полем text. используй для записей с длиной меньше 250 символов тип VARCHAR. А про то как правильно использывать типы в зависемости от потребностей читаем здесь:
6.2 Типы данных столбцов (http://www.mysql.ru/docs/man/Column_types.html)
-
for_i_0
У меня стоит другая задача. Так что TEXT все нормально сайдет для меня. Ну вот теперь сделал как-то со связями таблицу правильео? CREATE TABLE client (
id INT NOT NULL AUTO_INCREMENT,
proect_id INT NOT NULL,
fio TEXT NULL,
dolznost TEXT NULL,
tel TEXT NULL,
facs TEXT NULL,
mail TEXT NULL,
www TEXT NULL,
adres TEXT NULL,
PRIMARY KEY(id, proect_id),
INDEX client_FKIndex1(proect_id)
);
CREATE TABLE hod (
id INT NOT NULL AUTO_INCREMENT,
proect_id INT NOT NULL,
chislo TEXT NULL,
zvonok TEXT NULL,
contact TEXT NULL,
rez TEXT NULL,
dop TEXT NULL,
sost TEXT NULL,
PRIMARY KEY(id, proect_id),
INDEX hod_FKIndex1(proect_id)
);
CREATE TABLE proect (
id INT NOT NULL AUTO_INCREMENT,
name_org TEXT NULL,
cat TEXT NULL,
who TEXT NULL,
fio TEXT NULL,
dolznost TEXT NULL,
tel TEXT NULL,
facs TEXT NULL,
mail TEXT NULL,
www TEXT NULL,
adres TEXT NULL,
PRIMARY KEY(id)
-
Mr.Voron
select proect.name_org,
proect.cat,
proect.who,
proect.fio,
proect.dolznost,
proect.tel,
proect.facs,
proect.mail,
proect.www,
proect.adres,hod.id_org AS org2,hod.fio AS fio2,hod.dolznost AS dolznost2,
hod.tel AS tel2,hod.facs AS facs2,hod.mail AS mail2,hod.www AS www2,
hod.adres AS adres2 FROM proect, hod WHERE proect.id = hod.proect_id
Логично ?
-
Все Логиччно и почему тогда не рабоатет: $sql = mysql_query("select proect.name_org,
proect.cat,
proect.who,
proect.fio,
proect.dolznost,
proect.tel,
proect.facs,
proect.mail,
proect.www,
proect.adres,hod.id_org AS org2,hod.fio AS fio2,hod.dolznost AS dolznost2,
hod.tel AS tel2,hod.facs AS facs2,hod.mail AS mail2,hod.www AS www2,
hod.adres AS adres2 FROM proect, hod WHERE proect.id = hod.proect_id");
if($row = mysql_fetch_array($sql)) {
-
Сорри все работает.
-
замечтательно, тема закрыта.