SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 05.12.2010 12:48:41

Cypher
Участник
Зарегистрирован: 05.12.2010
Сообщений: 4

Очень прошу помочь начинающему программисту

Здравствуйте!
Ситуация у меня такая. Недавно начал изучать MySQL 5.0  возникло много теоретических вопросов:

1) Если создаются таблицы со связью "многие ко многим", то по правилам создают третью таблицу в которой указывается сама связь по определенным ключам. Вопрос такой, есть 3 таблицы (третья- таблица связей)

ПОЛЬЗОВАТЕЛИ

CREATE TABLE users(
userid INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
name VARCHAR(80) NOT NULL,
surname VARCHAR(80) NOT NULL,
PRIMARY KEY (userid)
) TYPE=InnoDB;

Продукты

CREATE TABLE products(
prodid INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
name VARCHAR(80) NOT NULL,
PRIMARY KEY (prodid)
) TYPE=InnoDB;

ЗАКАЗЫ

CREATE TABLE `orders`(
ordid INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
userid INT(10) UNSIGNED NOT NULL,
prodid INT(10) UNSIGNED NOT NULL,
PRIMARY KEY (ordid),
FOREIGN KEY (userid) REFERENCES users(userid)
ON UPDATE CASCADE
ON DELETE RESTRICT,
FOREIGN KEY (prodid) REFERENCES products(prodid)
ON UPDATE RESTRICT
ON DELETE CASCADE
) TYPE = InnoDB

Рисунок схемы таблицы, для наглядности примера, ниже.

когда пользователь делает покупку, то в таблице ЗАКАЗЫ остается запись идентификатор пользователя и идентиыикатоор товара, который он заказал. ВОПРОС: MySQL делает сама запись в таблица связей (в нашем случае ЗАКАЗЫ) или мне нужно при каждом заказе товара пользователем прописывать в ЗАКАЗАХ идентификатор пользователя и товара который он заказал?

Если можно, прошу навести пример записи в таблицы. ЗАРАНЕЕ БЛАГОДАРЮ ЗА ОТВЕТ!)))


Прикрепленные файлы:
Attachment Icon db.jpg, Размер: 34,678 байт, Скачано: 352

Неактивен

 

#2 05.12.2010 12:57:08

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Очень прошу помочь начинающему программисту

Cypher написал:

MySQL делает сама запись в таблица связей (в нашем случае ЗАКАЗЫ) или мне нужно при каждом заказе товара пользователем прописывать в ЗАКАЗАХ идентификатор пользователя и товара который он заказал?

Естественно вам придется самому делать запись в таблице заказов.


Cypher написал:

Если можно, прошу навести пример записи в таблицы. ЗАРАНЕЕ БЛАГОДАРЮ ЗА ОТВЕТ!)))

http://dev.mysql.com/doc/refman/5.1/en/insert.html

Неактивен

 

#3 05.12.2010 13:24:08

Cypher
Участник
Зарегистрирован: 05.12.2010
Сообщений: 4

Re: Очень прошу помочь начинающему программисту

Благодарю за ответ!)))

Еще такой вопрос. Например пользователь 1 заказывает товар 2, то в таблицу ЗАКАЗЫ нужно записать ключи товара и пользователя таким запросом ?

INSERT INTO orders  (userid,prodid )
  SELECT users.userid , products.prodid
  FROM users,products WHERE users.userid =1 AND  products.prodid =2 ;


Кстати. я учусь по книге "Самоучитель MySQL 5,0 " М.Кузнецов,И.Симдянов. Книга. конечно, не изобилует примерами и реальным кодом, сухая теория, и то половина книги про функции. Возможно Вы посоветуете мне что-то получше?

Благодарю Вас !))

Неактивен

 

#4 05.12.2010 23:46:15

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Очень прошу помочь начинающему программисту

Cypher написал:

Например пользователь 1 заказывает товар 2, то в таблицу ЗАКАЗЫ нужно записать ключи товара и пользователя таким запросом ?

INSERT INTO orders  (userid,prodid )
  SELECT users.userid , products.prodid
  FROM users,products WHERE users.userid =1 AND  products.prodid =2 ;

Можно конечно и таким, но я бы написал

INSERT INTO orders  (userid,prodid ) VALUES(1,2);

SELECT у вас совершенно лишний, так как вы и так знаете значения users.userid , products.prodid

Cypher написал:

Кстати. я учусь по книге "Самоучитель MySQL 5,0 " М.Кузнецов,И.Симдянов. Книга. конечно, не изобилует примерами и реальным кодом, сухая теория, и то половина книги про функции. Возможно Вы посоветуете мне что-то получше?

http://sqlinfo.ru/forum/viewtopic.php?id=1369
Ещё документация - http://dev.mysql.com/doc/refman/5.1/en/

А, отвечая на форуме, разберете кучу реальных примеров из жизни. Это, без иронии, лучше любой книжки.

Неактивен

 

#5 07.12.2010 15:03:34

инна
Участник
Зарегистрирован: 07.12.2010
Сообщений: 1

Re: Очень прошу помочь начинающему программисту

незнаю точно куда писать но уменя такая проблема, я немогу зайти на сайт попадаю на такую сраницу
MySQL Error!
------------------------

The Error returned was:
Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

Error Number:
1

помагите плиз

Неактивен

 

#6 08.12.2010 01:59:02

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Очень прошу помочь начинающему программисту

Инна, а что Вам помешало создать отдельную тему?
Скорее всего, не запущен демон MySQL.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson