Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: манипуляции со значениями полей
 
 автор: Alex111   (14.10.2006 в 23:30)   письмо автору
 
 

Всем привет!С помощью каких запросов можно манипулировать со значением поля(столбца)
таблицы?Например есть столбец 'name',значение'x' далее хотел-бы в запросах оперировать с 'x'
Я так понимаю-с помощью псевдонимов?
спс

   
 
 автор: cheops   (15.10.2006 в 13:06)   письмо автору
 
   для: Alex111   (14.10.2006 в 23:30)
 

Не очено понятно... вы хотите выбрать записи поле name которых принимает значение 'x' или вам требуется что-то другое?
SELECT * FROM tbl WHERE name = 'x'

   
 
 автор: Alex111   (15.10.2006 в 16:20)   письмо автору
 
   для: cheops   (15.10.2006 в 13:06)
 

Немного не то.В таблице у меня есть обьект,ему присвоен код.Как мне лучшим образом построить SQL
запрос в котором уже будет фигурировать этот код.
пример:
есть человек. ему присвоен код. при нормализации таблиц этой базы данных везде этот код во всех
таблицах(mail,phone, и тд)присутствует.
Вопрос: как построить SQL-запрос,чтоб в запросе указывая
этот код получить сразу ВСЕ (или перечисляемые в запросе) данные на человека,ведь они в следствии нормализации стали в разных таблицах (mail,phone, и тд).
прошу пардона, если муть горожу.

   
 
 автор: kasmanaft   (15.10.2006 в 18:28)   письмо автору
 
   для: Alex111   (15.10.2006 в 16:20)
 

"код" - это идентификатор пользователя, да?
наверное имеется поле в каждой таблице, что-то типа 'code' ..
пишем запросы для каждой таблицы " * * * WHERE code = 'x'
и будет вроде то, что надо :)

   
 
 автор: Alex111   (15.10.2006 в 19:38)   письмо автору
 
   для: kasmanaft   (15.10.2006 в 18:28)
 

Спасибо)

   
 
 автор: cheops   (15.10.2006 в 19:41)   письмо автору
 
   для: Alex111   (15.10.2006 в 16:20)
 

Следует воспользоваться многотабличным SQL-запросом. Приведите структуру вашей базы данных и какую информацию извлечь хотите, чтобы можно было конкретный пример привести.

   
 
 автор: Alex111   (15.10.2006 в 21:50)   письмо автору
 
   для: cheops   (15.10.2006 в 19:41)
 

Здесь привожу всю структуру своей базы данных 'people'

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| people |
| shop |
| test |
+--------------------+
5 rows in set (0.00 sec)

mysql> use people;
Database changed
mysql> show tables;
+------------------+
| Tables_in_people |
+------------------+
| people_mail |
| people_name |
| people_phone |
+------------------+
3 rows in set (0.00 sec)

mysql> describe people_mail;
+---------------+-------------+------+-----+-------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+-------------+------+-----+-------------------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| code_number | int(11) | NO | PRI | | |
| mail | varchar(25) | YES | | NULL | |
| time_creation | timestamp | YES | | CURRENT_TIMESTAMP | |
+---------------+-------------+------+-----+-------------------+----------------+
4 rows in set (0.05 sec)

mysql> describe people_name;
+---------------+-------------+------+-----+-------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+-------------+------+-----+-------------------+----------------+
| numberID | int(11) | NO | PRI | NULL | auto_increment |
| firstName | varchar(20) | YES | | NULL | |
| patronymic | varchar(20) | YES | | NULL | |
| lastName | varchar(25) | YES | | NULL | |
| time_creation | timestamp | YES | | CURRENT_TIMESTAMP | |
| code_number | int(11) | NO | PRI | | |
+---------------+-------------+------+-----+-------------------+----------------+
6 rows in set (0.02 sec)

mysql> describe people_phone;
+---------------+-------------+------+-----+-------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+-------------+------+-----+-------------------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| code_number | int(11) | NO | PRI | | |
| sphone | varchar(20) | YES | | NULL | |
| rphone | varchar(20) | YES | | NULL | |
| dphone | varchar(20) | YES | | NULL | |
| time_creation | timestamp | YES | | CURRENT_TIMESTAMP | |
+---------------+-------------+------+-----+-------------------+----------------+
6 rows in set (0.00 sec)

Вопрос состоял в том,что-бы исполнить такой SQL-запрос,который возвращал-бы
все значения естественно в том числе и из других таблиц ранее выбранного поля столбца 'code_number' например.

т.е. я задаю в запросе какой нибудь 'code_number' и получаю по нему всю инфу ,или на ту, что перечислил в запросе.

   
 
 автор: Alex111   (15.10.2006 в 22:50)   письмо автору
 
   для: Alex111   (15.10.2006 в 21:50)
 

?

   
 
 автор: cheops   (16.10.2006 в 00:06)   письмо автору
 
   для: Alex111   (15.10.2006 в 21:50)
 

А как связаны между собой таблицы people_mail, people_name, people_phone - т.е. для каждого конкретного человека какое поля в этих таблицах принимает одно и тоже значение?

   
 
 автор: Alex111   (16.10.2006 в 00:25)   письмо автору
 
   для: cheops   (16.10.2006 в 00:06)
 

cheops, спасибо Вам за уделяемое мне время.Эту задачу в пределах одной таблицы я уже решил
сам.Все на самом деле было не трудно и осталось как Вы и писали в одном из постов разобраться со
сложными запросами.Ключами для связи между таблицами: people_mail, people_name, people_phone
является значение атрибута code_number' ,которое присутствует во всех таблицах.

спс

   
 
 автор: Alex111   (16.10.2006 в 12:24)   письмо автору
 
   для: Alex111   (16.10.2006 в 00:25)
 

?

   
 
 автор: cheops   (16.10.2006 в 13:37)   письмо автору
 
   для: Alex111   (16.10.2006 в 00:25)
 

Тогда многотабличный запрос может выглядеть следующим образом
SELECT people_mail.mail AS mail,
       people_mail.time_creation,
       people_name.numberID AS numberID,
       people_name.firstName AS firstName,
       people_name.patronymic AS patronymic,
       people_name.lastName AS, lastName,
       people_name.time_creation,
       people_phone.id AS id,
       people_phone.code_number AS code_number,
       people_phone.sphone AS sphone,
       people_phone.rphone AS rphone,
       people_phone.dphone AS dphone,
       people_phone.time_creation
FROM people_mail, people_name, people_phone
WHERE people_mail.code_number = 7 AND
      people_mail.code_number = people_name.code_number AND
      people_phone.code_nuber = people_name.code_number;

   
 
 автор: Alex111   (17.10.2006 в 02:06)   письмо автору
 
   для: cheops   (16.10.2006 в 13:37)
 

Спасибо,cheops! Не кисло однако:)

   
 
 автор: Alex111   (17.10.2006 в 13:50)   письмо автору
 
   для: cheops   (16.10.2006 в 13:37)
 

cheops,приветствую Вас!Я маленько поправил Ваш код,там в в строке№6 запятая лишняя была и
в последней строчке неправильно название столбца указанно было.
Но все-таки запрос к сожалению не возвращает запрашиваемые значения ,а пишет ,что мол -пустой набор))
привожу запрос:

mysql> SELECT people_mail.mail AS mail,
-> people_mail.time_creation,
-> people_name.numberID AS numberID,
-> people_name.firstName AS firstName,
-> people_name.patronymic AS patronymic,
-> people_name.lastName AS lastName,
-> people_name.time_creation,
-> people_phone.id AS id,
-> people_phone.code_number AS code_number,
-> people_phone.sphone AS sphone,
-> people_phone.rphone AS rphone,
-> people_phone.dphone AS dphone,
-> people_phone.time_creation
-> FROM people_mail, people_name, people_phone
-> WHERE people_mail.code_number = 7 AND
-> people_mail.code_number = people_name.code_number AND
-> people_phone.code_number = people_name.code_number;
Empty set (0.00 sec)

mysql>
С уважением,Alex111

   
 
 автор: cheops   (17.10.2006 в 14:07)   письмо автору
 
   для: Alex111   (17.10.2006 в 13:50)
 

А у вас имеются записи со значением поля people_mail.code_number = 7?

   
 
 автор: Alex111   (19.10.2006 в 01:27)   письмо автору
 
   для: cheops   (17.10.2006 в 14:07)
 

Приветствую,cheops!Пардон ,я не совсем уловил вопрос.Имеется в виду есть ли запись в таблице
people_mail ,в седьмой строке столбца code_number?Если это-то есть.

   
 
 автор: Trianon   (19.10.2006 в 09:42)   письмо автору
 
   для: Alex111   (19.10.2006 в 01:27)
 

Во 1-х, у столбцов нет строк. Строки есть только у таблиц.
Во 2-х, даже у таблиц нет седьмых, двадцатых и т.п. строк. Есть лишь строки, в некотором поле которых записано значение 7.
В 3-х, вышеупомянутый запрос выведет результат лишь в том случае, если во всех трех таблицах найдутся строки, в полях code_number каждой из которых будет записано 7.

О наличии этих строк и спрашивал cheops.

   
 
 автор: Alex111   (21.10.2006 в 01:10)   письмо автору
 
   для: Trianon   (19.10.2006 в 09:42)
 

Спасибо ,Trianon за ответ.Касательно отсутствия строк у столбцов -я согласен с Вами.Надо было сказать полей.
Говоря, "есть ли запись в таблице people_mail ,в седьмой строке столбца code_number? "я имел ввиду
седьмой кортеж ,и значение поля столбца code_number.хотя естесно я не верно выразил мысль)что поделать -начинающий.Одно не пойму-с чего взял cheops,что в таблицах в полях столбцов code_number есть значение=7?
Поля столбцов code_number во всех таблицах имеют другое уникальное значение и везде оно прописанно соответствующем образом.

   
 
 автор: Alex111   (23.10.2006 в 00:07)   письмо автору
 
   для: Alex111   (21.10.2006 в 01:10)
 

?

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования