X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Обращение к разным таблицам из базы
Kuchuluk
Kuchuluk
Topic Starter сообщение 29.1.2012, 14:23; Ответить: Kuchuluk
Сообщение #1


Если я хочу разместить на небольшом участке веб-страницы тексты из разных таблиц БД, то для этого нужно каждый раз новый запрос к БД делать? Или можно как-то по другому? Если не затруднит напишите какой-нибудь код для примера.
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
matroskin8
matroskin8
сообщение 29.1.2012, 17:30; Ответить: matroskin8
Сообщение #2


Да, в большинстве случаев 1 таблица = 1 запрос. В зависимости от задачи можно объединять данные из различных таблиц в одном запросе, но пока что не стоит забивать себе этим голову... лучше доведите до автоматизма работу с простыми вещами.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Kuchuluk
Kuchuluk
Topic Starter сообщение 29.1.2012, 19:46; Ответить: Kuchuluk
Сообщение #3


SELECT * FROM table1,table2 WHERE table1.name='vasya' AND table2.firstname='pupkin';

таким способом пристыковки можно?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
matroskin8
matroskin8
сообщение 29.1.2012, 20:32; Ответить: matroskin8
Сообщение #4


А попробовать? В том же phpMyAdmin есть вкладка SQL, где можно ввести любой запрос и получить результат. Так делать можно, но именно так делать - неправильно. Объединение таблиц правильно производить по внешнему ключу, получая при этом результирующую таблицу со связанными данными, а не по абсолютно разным значениям ("vasya" и "pupkin").
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Kuchuluk
Kuchuluk
Topic Starter сообщение 29.1.2012, 20:48; Ответить: Kuchuluk
Сообщение #5


(matroskin8 @ 29.1.2012, 22:32) *
Объединение таблиц правильно производить по внешнему ключу, получая при этом результирующую таблицу со связанными данными,

и эту результирующую таблицу тоже заносить в БД?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
yury_mw
yury_mw
сообщение 29.1.2012, 22:07; Ответить: yury_mw
Сообщение #6


Kuchuluk,
зачем результирующую таблицу заносить в БД? Просто будете использовать результат объединения в своих запросах.
Почитайте, должно помочь: http://ru.wikipedia.org/wiki/Join_(SQL)


Поблагодарили: (0)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
matroskin8
matroskin8
сообщение 29.1.2012, 23:04; Ответить: matroskin8
Сообщение #7


(Kuchuluk @ 29.1.2012, 18:48) *
и эту результирующую таблицу тоже заносить в БД?

Под результирующей таблицей имеется в виду результат, получаемый от сервера БД на Ваш запрос... этот результат ведь также представлен в табличном виде. Ну а заносить его в БД зачем? Вы ведь, получая комментарии к статье для вывода их на сайт, не вносите их в БД...


Поблагодарили: (0)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Kuchuluk
Kuchuluk
Topic Starter сообщение 29.1.2012, 23:22; Ответить: Kuchuluk
Сообщение #8


yury, matroskin8, спасибо, я понял. результирующюю таблицу нужно получать, чтобы впоследствии с ней работать. Но я имел в виду не совсем это ;) Я имел в виду вот что: например на страницу нужно вывести автора книги, ее название, краткое описание и жанр, к которому она относится. Автор находится в одной таблице, название и краткое описание в другой и жанр в третьей. И вот чтобы их вывести рядом друг с другом, как это реализовывается? Делается три запроса к базе данных и потом они через оператор printf выводятся что-ли?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
matroskin8
matroskin8
сообщение 30.1.2012, 1:24; Ответить: matroskin8
Сообщение #9


Пока Вы только учитесь - можно сделать и 3 запроса. А вообще это делается одним запросом, объединяющим записи нескольких таблиц. Здесь главное правильно спроектировать БД, чтобы прослеживались связи объединяемых таблиц. Вот, к примеру, 2 таблицы из Вашего вопроса:
таблица books:
id | name | genre
1 | Книга 1 | 1
2 | Книга 2 | 2
3 | Книга 3 | 1
4 | Книга 4 | 1
Здесь содержится название книги и ее жанр. Но жанр представлен числовым типом. Данным полем эта таблица ссылается на так называемый справочник, в котором содержится список жанров. Эта связь может быть использована для создания внешнего ключа с целью поддержания справочной целостности.
Вторая таблица genre:
id | genre
1 | Детектив
2 | Приключения
Теперь объединяем обе таблицы. Способ 1:
SELECT books.id, books.name, genre.genre FROM books, genre WHERE books.genre = genre.id

Результат:
id | name | genre
1 | Книга 1 | Детектив
2 | Книга 2 | Приключения
3 | Книга 3 | Детектив
4 | Книга 4 | Детектив
Способ 2:
SELECT * FROM books JOIN genre ON books.genre = genre.id

Результат:
id | name | genre | id | genre
1 | Книга 1 | 1 | 1 | Детектив
2 | Книга 2 | 2 | 2 | Приключения
3 | Книга 3 | 1 | 1 | Детектив
4 | Книга 4 | 1 | 1 | Детектив
В общем, где-то так... мой Вам совет - прежде, чем углубляться в "дебри" языка SQL, все же освойте простейшее, а уж затем почитайте какую-нибудь книжку по языку запросов... например, могу порекомендовать Мартина Грабера.


Поблагодарили: (0)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Kuchuluk
Kuchuluk
Topic Starter сообщение 30.1.2012, 5:41; Ответить: Kuchuluk
Сообщение #10


matroskin8, спасибо, попробую ;)
мой Вам совет - прежде, чем углубляться в "дебри" языка SQL, все же освойте простейшее, а уж затем почитайте какую-нибудь книжку по языку запросов... например, могу порекомендовать Мартина Грабера.

просто мне это уже сейчас нужно реализовывать.

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Горячая тема (нет новых ответов) Свежие базы ключевых слов с подсказок гугла!
126 Krok 68685 Сегодня, 5:04
автор: Krok
Открытая тема (нет новых ответов) Базы Youtube кейвордов с данными по конкуренции и Volume
6 Krok 1588 Вчера, 5:43
автор: Krok
Открытая тема (нет новых ответов) Большие базы Semrush кейвордов по разным тематикам! Много кейвордов с трафиком и без конкуренции! Volume, KD, CPC
22 Krok 6763 12.4.2024, 5:17
автор: Krok
Горячая тема (нет новых ответов) Пакетное размещение статей по разным тематикам. Скидки!
36 kasey7 11022 6.4.2024, 4:30
автор: kasey7
Открытая тема (нет новых ответов) Нужно разносить телеграм каналы по разным аккаунтам?
9 Mixatraider 1896 20.3.2024, 18:34
автор: Rebex


 



RSS Текстовая версия Сейчас: 24.4.2024, 13:29
Дизайн