Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.12.2015, 14:25   #1
Denton72
Пользователь
 
Регистрация: 11.10.2015
Сообщений: 25
По умолчанию MySql процедуры и связи

Код:
create database ITVeikals;

USE ITVeikals;

create table Kategorija ( id INT NOT NULL AUTO_INCREMENT , Nosaukums CHAR(20) NOT NULL , PRIMARY KEY(id));

insert into Kategorija (Nosaukums) values ("Datoru tehnika"),
("Periferijas ierices"),
("Datora programmatura");

select * from Kategorija;

create table Preces (Preces_id  INT NOT NULL AUTO_INCREMENT , 
Nosaukums CHAR(20) NOT NULL,
Firma CHAR(20) NOT NULL, 
IzgGads CHAR(20) NOT NULL, 
Cena INT NOT NULL,
Daudzums INT NULL,
Piegadatajs CHAR(20) NOT NULL,
/*тут должен быть FOREIGN KEY */
PRIMARY KEY(Preces_id));

describe preces;
insert into Preces
 Values (NULL,'Dator Intel','IBM','1987',' 322,00',5,'1',1);
 
insert into Preces
 Values (NULL,'Skeneris','IBM','1987',' 54,00',2,'2',2);
 
insert into Preces
 Values (NULL,'Printeris','Intel','1987',' 45,00',3,'3',2);
 
insert into Preces
 Values (NULL,'Windows 98','Microsoft','1999',' 120,00',4,'1',3);

insert into Preces
 Values (NULL,'Dators AMD Duron','AMD','2000',' 250,00',6,'2',1);
 
insert into Preces
 Values (NULL,'Dator Celeron','Celeron','1999','150,00',5,'3',1);
 
 Select * from Preces;

здрасти форум люди, у меня вопрос по базам данным
есть две таблицы
первая маленькая
вторая
более подробная
мне надо помощь сделать и обеснить:
1.сделать связь(relationship) между таблицами
2.чтобы название из первой(категории) были во второй (как это сделать?)
3.сделать две процедуры одна которая будет брать цены по категориям и со сщитает среднию цену этой категории
И вторая ввожду название из второй таблицы (nosaukums) и удаляется эта запись

но с процедурами у меня затруднение я в гугле находил много примеров но как запустить не всё сумел
работали только с delimeter //
...
end//
заранее спасибо
(работал на Wamp)

Последний раз редактировалось Stilet; 15.12.2015 в 17:10.
Denton72 вне форума Ответить с цитированием
Старый 15.12.2015, 15:39   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
сделать связь
Можно при создании таблицы FOREIGN KEY использовать или ALTER TABLE ... ADD CONSTRAINT ... FOREIGN KEY для существующей
Цитата:
чтобы название из первой(категории) были во второй (как это сделать?)
Например LEFT JOIN в запросе использовать

Короче изучить документацию, а не только примеры в интернете. Для процедур аналогично
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 15.12.2015, 15:56   #3
JUDAS
фонатик DELPHI
Форумчанин
 
Аватар для JUDAS
 
Регистрация: 14.01.2008
Сообщений: 714
По умолчанию

Код:
SELECT K.*,P.* FROM  kategorija K , preces P
WHERE K.id = P.(название поля "тут должен быть FOREIGN KEY")
Например

Код:
CREATE TABLE category 
( 
  id INT NOT NULL AUTO_INCREMENT, 
  Nosaukums CHAR(20) NOT NULL , 
  PRIMARY KEY(id)
); 

create table precess 
(
  id  INT NOT NULL AUTO_INCREMENT ,  
  nosaukums CHAR(20) NOT NULL, 
  firma CHAR(20) NOT NULL,  
  IzgGads CHAR(20) NOT NULL,  
  Cena INT NOT NULL, 
  Daudzums INT NULL, 
  Piegadatajs CHAR(20) NOT NULL, 
  categoryID int REFERENCES category(id) ON UPDATE CASCADE ON DELETE CASCADE,
  PRIMARY KEY(id)
);
Выборка выглядит так

SELECT K.*,P.* FROM category K , precess P WHERE K.id = P.categoryID

или как предлагает Аватар

Код:
SELECT K.*,P.* FROM  category K
LEFT OUTER JOIN precess P ON K.id = P.categoryID
95% сбоев и ошибок приложений, находится в полу метрах от монитора
JUDAS вне форума Ответить с цитированием
Старый 15.12.2015, 19:57   #4
Denton72
Пользователь
 
Регистрация: 11.10.2015
Сообщений: 25
По умолчанию

Код:
create database ITVeikals;

USE ITVeikals;

create table Kategorija ( id INT NOT NULL AUTO_INCREMENT , Nosaukums CHAR(20) NOT NULL , PRIMARY KEY(id));

insert into Kategorija (Nosaukums) values ("Datoru tehnika"),
("Periferijas ierices"),
("Datora programmatura");

select * from Kategorija;

create table Preces (Preces_id  INT NOT NULL AUTO_INCREMENT , 
Nosaukums CHAR(20) NOT NULL,
Firma CHAR(20) NOT NULL, 
IzgGads CHAR(20) NOT NULL, 
Cena INT NOT NULL,
Daudzums INT NULL,
Piegadatajs CHAR(20) NOT NULL,
kategorija int REFERENCES kategorija(id) ON UPDATE CASCADE ON DELETE CASCADE,
PRIMARY KEY(Preces_id));


describe preces;
insert into Preces
 Values (NULL,'Dator Intel','IBM','1987',' 322,00',5,'1',1);
 
insert into Preces
 Values (NULL,'Skeneris','IBM','1987',' 54,00',2,'2',2);
 
insert into Preces
 Values (NULL,'Printeris','Intel','1987',' 45,00',3,'3',2);
 
insert into Preces
 Values (NULL,'Windows 98','Microsoft','1999',' 120,00',4,'1',3);

insert into Preces
 Values (NULL,'Dators AMD Duron','AMD','2000',' 250,00',6,'2',1);
 
insert into Preces
 Values (NULL,'Dator Celeron','Celeron','1999','150,00',5,'3',1);
 
 Select * from Preces;
использовал метод JUDAS лёгкий в одну строчку
спасибо АВАТАР за селект метод но я с ним как то парюсь всё время забываю

осталось только процеду сделать

но у меня только предстовление как выглядит она
Код:
 
DELIMITER // 
 
 CREATE PROCEDURE precu grupas kods
BEGIN
DECLARE NosakumsDelete CHAR;
SET NosakumsDelete=/*ввод с клавиатуры (если так можно как-то)если например  из таблицы preces ввести Dator Intel то вся первая запись в этой таблицы удалятся*/;
IF
NosakumsDelete = /*в таблицы есть такое названия то удаляется*/
Else
NosakumsDelete = /*в таблицы нету такого названия то нечего небудет*/

END IF;

END //
вот так представление есть но как сделать я незнаю что писать нет идеи

Последний раз редактировалось Denton72; 15.12.2015 в 19:57. Причина: неправильно создла
Denton72 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проложить связи / MySQL 3Doleg SQL, базы данных 1 21.02.2014 00:29
процедуры, функции / MySQL 3Doleg SQL, базы данных 4 12.02.2014 13:17
Вызов хранимой процедуры MySQL Dozent БД в Delphi 4 15.10.2013 03:24
оптимизация процедуры MySQL IliaIT SQL, базы данных 2 18.06.2012 10:31
Триггеры и хранимые процедуры mysql hit'n'run Фриланс 0 15.05.2011 14:11