Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Базы данных > MySQL
Перезагрузить страницу Как составить запрос к базе данных
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Михалыч Михалыч вне форума
Member
 
Сообщений: 40
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 11.04.2006
По умолчанию Как составить запрос к базе данных - 11.04.2006, 09:46

Есть БД, в которой 2 таблицы.

Структура первой таблицы такова:
Код:
idUser int unsigned not null auto_increment primary key,
idColmn1 int unsigned,
idColmn2 int unsigned,
idColmn3 int unsigned,
idColmn4 int unsigned,
idColmn5 int unsigned

Структура второй:
Код:
idColumn int unsigned not null auto_increment primary key,
chrColumn varchar(255)

Т.е. в первой таблице в idColumn'ах - храняться коды, описание которых находятся во второй.
Как сопоставить эти 2 таблицы, чтобы результат был примерно следующим:
User1 (chrColumn1, chrColumn3, chrColumn5)
User2 (chrColumn4)
User3 (chrColumn2, chrColumn3)
и т.д. и т.п.

Помогите, кто может...
Ответить с цитированием
  (#2 (permalink)) Старый
LziF LziF вне форума
Member
 
Сообщений: 203
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 11.06.2004
По умолчанию 11.04.2006, 10:36

можно немного поподробнее... что то с утра туго соображаю!!!... в чем смысл....

ЗЫ: дА!!! не забывайте указывать названия таблиц
Ответить с цитированием
  (#3 (permalink)) Старый
Dian Dian вне форума
Member
 
Сообщений: 5,243
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 17.09.2004
По умолчанию 11.04.2006, 13:11

Если число описаний для одной записи различно, то сделать такое только средствами SQL будет весьма проблематично. Тем более, что здесь нет даже намека на то, как поля связаны с описанием
Ответить с цитированием
  (#4 (permalink)) Старый
Михалыч Михалыч вне форума
Member
 
Сообщений: 40
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 11.04.2006
По умолчанию 12.04.2006, 22:49

Про имена таблиц: Пусть будет USER и BOOK.

Объясню на примере.
Имеется 1000 user'ов, и имеется 2000 книг.
Каждый юзер прочитал не более 5 книг, т.е. от 0 до 5.
В таблице USER храняться id книг, а в таблице BOOK - названия книг (ну можно еще автора добавить, краткое описание и т.п.).
В итоге, нужно получить такую таблицу (массив):
User1 (Book1, Book3, Book23)
User2 (Book15, Book35, Book235, Book335)
User3 (Book100) и т.д., где Book - это название книги, а не ее id.

Как получить такое, одним запросом?
Ответить с цитированием
  (#5 (permalink)) Старый
LziF LziF вне форума
Member
 
Сообщений: 203
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 11.06.2004
По умолчанию 13.04.2006, 12:43

а может надо нечто подобное????

Код:
---------------
|таблица USERs|
---------------
|ID           |
|Name         |
|...          |
---------------
Таблица хранит себе всех узеров, которые вообще есть!!!


---------------
|таблица BOOKs|
---------------
|ID           |
|Name         |
|Autor        |
|...          |
---------------
Таблица хранит себе все книги, которые вообще есть!!!


---------------
|таблица LINKs|
---------------
|ID_User      |
|ID_Book      |
---------------
таблица связей между юзером и книгой, т.е. то что прочитал пользователь!!!!!!!! или брал...
и запрос выбора этого всего:
Код:
select u.Name,b.Name
  from USERs u, BOOKs b, LINKs l
 where u.ID = l.ID_User
   and b.ID = l.ID_Book
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
Михалыч Михалыч вне форума
Member
 
Сообщений: 40
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 11.04.2006
По умолчанию 13.04.2006, 14:50

Ну дак и результат в этом случае будет:

Код:
User1 | Book1
User1 | Book3
User1 | Book23
User2 | Book15
User2 | Book35
User2 | Book235
User2 | Book335
User3 | Book100
А мне необходимо:

Код:
User1 (Book1, Book3, Book23) 
User2 (Book15, Book35, Book235, Book335) 
User3 (Book100)
Т.е. здесь необходимо связать эти таблицы через JOIN, но у меня че-то не получается - выдает ошибки.
Ответить с цитированием
  (#7 (permalink)) Старый
Dian Dian вне форума
Member
 
Сообщений: 5,243
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 17.09.2004
По умолчанию 13.04.2006, 15:26

Чтобы так вытянуть средствами SQL нужен курсор, но в обычных запросах использовать его не дадут - как минимум ХП
Ответить с цитированием
  (#8 (permalink)) Старый
LziF LziF вне форума
Member
 
Сообщений: 203
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 11.06.2004
По умолчанию 13.04.2006, 15:44

Цитата:
Originally posted by Михалыч
[b]Ну дак и результат в этом случае будет:

Код:
User1 | Book1
User1 | Book3
User1 | Book23
User2 | Book15
User2 | Book35
User2 | Book235
User2 | Book335
User3 | Book100
А мне необходимо:

Код:
User1 (Book1, Book3, Book23) 
User2 (Book15, Book35, Book235, Book335) 
User3 (Book100)
Т.е. здесь необходимо связать эти таблицы через JOIN, но у меня че-то не получается - выдает ошибки.

ХП!!!
Ответить с цитированием
  (#9 (permalink)) Старый
Михалыч Михалыч вне форума
Member
 
Сообщений: 40
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 11.04.2006
По умолчанию 13.04.2006, 15:46

Расшифруйте, что такое "ХП"?
Ответить с цитированием
  (#10 (permalink)) Старый
LziF LziF вне форума
Member
 
Сообщений: 203
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 11.06.2004
По умолчанию 13.04.2006, 17:05

Цитата:
Originally posted by Михалыч
[b]Расшифруйте, что такое "ХП"?
Хранимка
Хранимая Процедура
Stored Procedure
Ответить с цитированием
  (#11 (permalink)) Старый
Михалыч Михалыч вне форума
Member
 
Сообщений: 40
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 11.04.2006
По умолчанию 15.04.2006, 14:50

Ура, составил!!


Код:
SELECT idTable1, c1.chrColumn as Column1, c2.chrColumn as Column2 
FROM table1 INNER JOIN table2 c1 ON idColumn1 = c1.idColumn
INNER JOIN table2 c2 ON idColumn2 = c2.idColumn и т.д.
Ответить с цитированием
  (#12 (permalink)) Старый
Dian Dian вне форума
Member
 
Сообщений: 5,243
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 17.09.2004
По умолчанию 15.04.2006, 15:45

Тоже вариант. А что делать если там пара тысяч записей?
Ответить с цитированием
Ads
  (#13 (permalink)) Старый
Михалыч Михалыч вне форума
Member
 
Сообщений: 40
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 11.04.2006
По умолчанию 15.04.2006, 16:08

Повторить пару тысяч раз

Да нет конечно, MySQL такой запрос не примет.
Но просто мне-то нужно было всего 5 записей сопоставить.
Ответить с цитированием
  (#14 (permalink)) Старый
LziF LziF вне форума
Member
 
Сообщений: 203
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 11.06.2004
По умолчанию 17.04.2006, 11:04

м-м-м-мДА

на вопрос:::
Цитата:
Originally posted by Dian+-->
Цитата:
А что делать если там пара тысяч записей?
ответ:::
<!--QuoteBegin-Михалыч

[b]Но просто мне-то нужно было всего 5 записей сопоставить.
а в условии где это???????!!!


ЗЫ::: когда ЖЕ научитесь правильно задавать вопросы???
Ответить с цитированием
  (#15 (permalink)) Старый
Dian Dian вне форума
Member
 
Сообщений: 5,243
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 17.09.2004
По умолчанию 17.04.2006, 16:25

Цитата:
Originally posted by LziF
[b]когда ЖЕ научитесь правильно задавать вопросы???
Это будет только в развитом коммунистическом обществе будет
Ответить с цитированием
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите составить запрос!!! Sheff Prolog 3 12.06.2011 17:33
Как составить SQL запрос Anthony68 SQL 4 10.03.2011 09:55
Запрос по базе данных Epic_a13 Prolog 26 17.12.2009 23:34
База данных, как составить запрос Black Monarh Delphi 2 12.09.2008 18:24
Как составить запрос Sergjo75 SQL 1 05.09.2008 03:52
Как сделать запрос к базе данных Элена C++ Builder 1 05.06.2006 23:34
Запрос к базе данных imported_KILLER Prolog 1 05.06.2006 00:08
Как составить запрос BDE SQL FataLL C++ Builder 2 22.05.2006 14:35
Помогите составить SQL-запрос andrey_pst SQL 1 01.02.2006 16:08
Запрос к базе данных MYSQL byklin C++ Builder 4 24.08.2005 17:13
Как составить SQL-запрос feedbee SQL 5 25.08.2004 12:49
Где можно почитать о том, как в VC++ сделать запрос к базе данных imported_@LeX Visual C++ 0 19.07.2004 00:26



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов