Forum Webscript.Ru

Общие => Базы данных => Тема начата: =Женек= от 26 Декабря 2005, 07:26:23

Название: Выбор из двух таблиц
Отправлено: =Женек= от 26 Декабря 2005, 07:26:23
Есть таблица A с полями number_e и FIO (фамилия человека и его уникальные номер).
Есть таблица B c полями number_e,  TITLE и date (номер человека и название работы и срок исполнения).

Мне нужно выбрать из таблицы B все что сделал например "Иванов" (в таблице A есть запись с полем FIO "иванов") за последнюю неделю.

Как сделать? (Два варианта желательно для MySQL и InterBase)
Название: Выбор из двух таблиц
Отправлено: for_i_0 от 30 Декабря 2005, 14:06:22
MySQL:
ИМХО
дату начало недели придется вычислить внешними средствами(языком программирования)

SELECT a.fio, b.title FROM `a`, `b` WHERE a.number_e = b.number_e && a.number_e = \'номер иванова\' && BETWEEN NOW() && \'результат вычисления\'

С наступающим ;)
Название: Выбор из двух таблиц
Отправлено: Voron от 06 Апреля 2006, 22:54:16
Тот ж вопрос мне надо выбрать из двух таблиц.
Делаю такой запрос но не работет (Вообще я его правильно делаю?):
$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)) {
Название: Выбор из двух таблиц
Отправлено: for_i_0 от 06 Апреля 2006, 23:10:11
Voron
а где звязь между таблицами ?

читаем не отрываясь от монитора Народная самодеятельность — связи таблиц в MySQL (http://phpclub.ru/detail/article/2000-12-06)
Название: Выбор из двух таблиц
Отправлено: Voron от 06 Апреля 2006, 23:19:51
Связь мне нужна была только к таблице 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 ;
Название: Выбор из двух таблиц
Отправлено: for_i_0 от 06 Апреля 2006, 23:49:03
Voron
связь по полю с значением text это что-то новое.
Прочти пожалуйста cтатью которую я тебе дал выше.

Потом не злоупотребляй полем text. используй для записей с длиной меньше 250 символов тип VARCHAR. А про то как правильно использывать типы в зависемости от потребностей читаем здесь:
6.2 Типы данных столбцов (http://www.mysql.ru/docs/man/Column_types.html)
Название: Выбор из двух таблиц
Отправлено: Mr.Voron от 07 Апреля 2006, 20:11:42
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)
Название: Выбор из двух таблиц
Отправлено: for_i_0 от 07 Апреля 2006, 21:25:39
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

Логично ?
Название: Выбор из двух таблиц
Отправлено: Mr.Voron от 08 Апреля 2006, 20:03:00
Все Логиччно и почему тогда не рабоатет: $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)) {
Название: Выбор из двух таблиц
Отправлено: Mr.Voron от 08 Апреля 2006, 21:24:16
Сорри все работает.
Название: Выбор из двух таблиц
Отправлено: for_i_0 от 08 Апреля 2006, 21:34:55
замечтательно, тема закрыта.