За последние 24 часа нас посетили 20848 программистов и 1010 роботов. Сейчас ищут 366 программистов ...

Помогите составить запрос к БД MySQL...

Тема в разделе "MySQL", создана пользователем mihalych, 10 апр 2006.

  1. mihalych

    mihalych Активный пользователь

    С нами с:
    8 фев 2006
    Сообщения:
    30
    Симпатии:
    0
    Есть БД, в которой 2 таблицы.

    Структура первой таблицы такова:

    Код (Text):
    1. idTable1 int unsigned not null auto_increment primary key,
    2. idColmn1 int unsigned,
    3. idColmn2 int unsigned,
    4. idColmn3 int unsigned,
    5. idColmn4 int unsigned,
    6. idColmn5 int unsigned
    Структура второй:

    Код (Text):
    1. idColumn int unsigned not null auto_increment primary key,
    2. chrColumn varchar(255)
    Т.е. в первой таблице в idColumn'ах - храняться коды, описание которых находятся во второй.
    Как сопоставить 2-ю таблицу первой?
    Помогите, кто может... :roll:
     
  2. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    mihalych
    а кто мешает сраз в первой хранить chrColumn ? Зачем промежуточный изврат?
     
  3. mihalych

    mihalych Активный пользователь

    С нами с:
    8 фев 2006
    Сообщения:
    30
    Симпатии:
    0
    Пример.

    Имеется 1000 человек, имеется 1000 книг.
    В первой таблице идут user'ы и id book которые он прочитал, а во второй описание самих книг.
    Каждый раз прописывать user'у название книг (или даже ее краткое описание) - нецелесообразно.
     
  4. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    тогда я бы сделал так:

    users:
    id,name

    books
    id,name

    users2books:
    id_user,
    id_book


    тогда можно получать не только книги прочитанные юзером но и юзеров прочитавших книгу.
     
  5. mihalych

    mihalych Активный пользователь

    С нами с:
    8 фев 2006
    Сообщения:
    30
    Симпатии:
    0
    Я думал сделать также, но смысл то один и тот же, запрос не получается.

    Как например потом вывести 100 пользователей, которым прописать названия книг, которые они прочитали.

    Или это одним запросом не составить?
     
  6. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    найти книги, котрый прочитал конкретный юзер?
    Код (Text):
    1.  
    2. SELECT
    3.     users.name as username
    4.     books.name as bookname
    5. FROM
    6.     users,
    7.     books
    8. WHERE
    9.     users.id = $id AND
    10.     users.id = users2books.user_id AND
    11.     books.id = users2books.book_id AND
    получим

    петя:учебник1
    петя:учебник2
    ...


    p.s. почту свою пофикси?
    Код (Text):
    1.  
    2. ... while talking to mx3.z8.ru.:
    3. >>> DATA
    4. <<< 553 5.3.0 <pikalevo@pikalevo.ru>... User unknown
    5. 550 5.1.1 <pikalevo@pikalevo.ru>... User unknown
    6. <<< 503 5.0.0 Need RCPT (recipient)
     
  7. mihalych

    mihalych Активный пользователь

    С нами с:
    8 фев 2006
    Сообщения:
    30
    Симпатии:
    0
    Не, мне необходимо чтобы результат был такой:

    Петя (Книга 1, Книга 2, Книга 3)
    Вася (Книга 3, Книга 4)
    Ваня (Книга 1, Книга 4, Книга 5)

    и т.д.

    Вот такой результат реально получить одним запросом?
     
  8. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    mihalych
    теоритически да. используюя LEFT JOIN, но тогда нжно делать LET JOIN на каждый столбец, но это изврат.

    чем не устраивает то, что я предложил? получишь список, который можно потом как хочешь обрабатывать.
     
  9. mihalych

    mihalych Активный пользователь

    С нами с:
    8 фев 2006
    Сообщения:
    30
    Симпатии:
    0
    В том то и проблема, что вот результат такой нужен:

    Вот уже третий день вожусь.
    Спасибо за подсказку (про LEFT JOIN), сейчас в книге почитаю.

    ---------------------------

    А что на счет почты? я не понял...
     
  10. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    письма до тебя не доходят.
     
  11. mihalych

    mihalych Активный пользователь

    С нами с:
    8 фев 2006
    Сообщения:
    30
    Симпатии:
    0
    Т.е. надо хост-компани жалобу писать?

    Я давно это наблюдаю, то что мне иногда говорят что отправили письмо, а его нет.
    Вот только я писал хостерам на счет этого, но они сказали, что все ОК.
    Может это их антивирус или спам фильтр глючит?
     
  12. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    mihalych
    блин. юзера pikalevo@pikalevo.ru несуществует. что не понятно-то? этот адрес указан у тебя в профайле. на него уходят письма с форума и приходят с отлупами.
     
  13. mihalych

    mihalych Активный пользователь

    С нами с:
    8 фев 2006
    Сообщения:
    30
    Симпатии:
    0
    Ну самого то ящика pikalevo@pikalevo.ru не существует, т.к. у меня там один ящик *@pikalevo.ru - но раньше с Вашего форума я получал письма.
     
  14. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    mihalych
    ну так проверь что там у тебя ...

    Apr 10 11:26:59 gw sm-mta[2142]: k3A7Qx8D002139: to=<pikalevo@pikalevo.ru>, ctladdr=<440hz@php.ru> (1001/1001), delay=00:00:00, xdelay=00:00:00, mailer=esmtp, pri=30810, relay=mx3.z8.ru. [80.93.57.58], dsn=5.3.0, stat=User unknown
     
  15. mihalych

    mihalych Активный пользователь

    С нами с:
    8 фев 2006
    Сообщения:
    30
    Симпатии:
    0
    440hz

    Спасибо. Хостерам написал, сказали что разберуться... Посмотрим...