|
|
|
| Всем привет!С помощью каких запросов можно манипулировать со значением поля(столбца)
таблицы?Например есть столбец 'name',значение'x' далее хотел-бы в запросах оперировать с 'x'
Я так понимаю-с помощью псевдонимов?
спс | |
|
|
|
|
|
|
|
для: Alex111
(14.10.2006 в 23:30)
| | Не очено понятно... вы хотите выбрать записи поле name которых принимает значение 'x' или вам требуется что-то другое?
SELECT * FROM tbl WHERE name = 'x'
|
| |
|
|
|
|
|
|
|
для: cheops
(15.10.2006 в 13:06)
| | Немного не то.В таблице у меня есть обьект,ему присвоен код.Как мне лучшим образом построить SQL
запрос в котором уже будет фигурировать этот код.
пример:
есть человек. ему присвоен код. при нормализации таблиц этой базы данных везде этот код во всех
таблицах(mail,phone, и тд)присутствует.
Вопрос: как построить SQL-запрос,чтоб в запросе указывая
этот код получить сразу ВСЕ (или перечисляемые в запросе) данные на человека,ведь они в следствии нормализации стали в разных таблицах (mail,phone, и тд).
прошу пардона, если муть горожу. | |
|
|
|
|
|
|
|
для: Alex111
(15.10.2006 в 16:20)
| | "код" - это идентификатор пользователя, да?
наверное имеется поле в каждой таблице, что-то типа 'code' ..
пишем запросы для каждой таблицы " * * * WHERE code = 'x'
и будет вроде то, что надо :) | |
|
|
|
|
|
|
|
для: kasmanaft
(15.10.2006 в 18:28)
| | Спасибо) | |
|
|
|
|
|
|
|
для: Alex111
(15.10.2006 в 16:20)
| | Следует воспользоваться многотабличным SQL-запросом. Приведите структуру вашей базы данных и какую информацию извлечь хотите, чтобы можно было конкретный пример привести. | |
|
|
|
|
|
|
|
для: 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 в 21:50)
| | ? | |
|
|
|
|
|
|
|
для: Alex111
(15.10.2006 в 21:50)
| | А как связаны между собой таблицы people_mail, people_name, people_phone - т.е. для каждого конкретного человека какое поля в этих таблицах принимает одно и тоже значение? | |
|
|
|
|
|
|
|
для: cheops
(16.10.2006 в 00:06)
| | cheops, спасибо Вам за уделяемое мне время.Эту задачу в пределах одной таблицы я уже решил
сам.Все на самом деле было не трудно и осталось как Вы и писали в одном из постов разобраться со
сложными запросами.Ключами для связи между таблицами: people_mail, people_name, people_phone
является значение атрибута code_number' ,которое присутствует во всех таблицах.
спс | |
|
|
|
|
|
|
|
для: Alex111
(16.10.2006 в 00:25)
| | ? | |
|
|
|
|
|
|
|
для: 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;
|
| |
|
|
|
|
|
|
|
для: cheops
(16.10.2006 в 13:37)
| | Спасибо,cheops! Не кисло однако:) | |
|
|
|
|
|
|
|
для: 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 | |
|
|
|
|
|
|
|
для: Alex111
(17.10.2006 в 13:50)
| | А у вас имеются записи со значением поля people_mail.code_number = 7? | |
|
|
|
|
|
|
|
для: cheops
(17.10.2006 в 14:07)
| | Приветствую,cheops!Пардон ,я не совсем уловил вопрос.Имеется в виду есть ли запись в таблице
people_mail ,в седьмой строке столбца code_number?Если это-то есть. | |
|
|
|
|
|
|
|
для: Alex111
(19.10.2006 в 01:27)
| | Во 1-х, у столбцов нет строк. Строки есть только у таблиц.
Во 2-х, даже у таблиц нет седьмых, двадцатых и т.п. строк. Есть лишь строки, в некотором поле которых записано значение 7.
В 3-х, вышеупомянутый запрос выведет результат лишь в том случае, если во всех трех таблицах найдутся строки, в полях code_number каждой из которых будет записано 7.
О наличии этих строк и спрашивал cheops. | |
|
|
|
|
|
|
|
для: Trianon
(19.10.2006 в 09:42)
| | Спасибо ,Trianon за ответ.Касательно отсутствия строк у столбцов -я согласен с Вами.Надо было сказать полей.
Говоря, "есть ли запись в таблице people_mail ,в седьмой строке столбца code_number? "я имел ввиду
седьмой кортеж ,и значение поля столбца code_number.хотя естесно я не верно выразил мысль)что поделать -начинающий.Одно не пойму-с чего взял cheops,что в таблицах в полях столбцов code_number есть значение=7?
Поля столбцов code_number во всех таблицах имеют другое уникальное значение и везде оно прописанно соответствующем образом. | |
|
|
|
|
|
|
|
для: Alex111
(21.10.2006 в 01:10)
| | ? | |
|
|
|