mysql одновременный запрос к двум таблицам

Автор kak2z, 24 октября 2012, 11:25:48

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

kak2z

допустим есть две таблицы
в одной (post_table) хранятся сообщения (post) и идентификаторы пользователей (id_member)...
в другой таблице (members )"пользователи" хранятся идентификаторы пользователей (id_member), имена пользователей (user_name), их группы, почта..

как можно одним запросом сделать выборку сообщений нескольких пользователей и сразу же взять их данные из таблицы пользователей.
я в принципе знаю как сделать это двумя запросами -
1. сначала выборка сообщений а затем выборка в цикле уникальных идентификаторов  ...
2. Выборка пользователей

но может можно как то это дело оптимизировать до одного запроса? читал про JOIN - но так и не понял как сделать то что мне надо)
Спасибо)
Если нужно что то исправить, обновить, переставить, настроить, сделать форум заново - пишите в ЛС)

GeorG

kak2z, 2-3-4 запроса, это не есть плохо и всегда "убыточно", гораздо важнее нагрузка и их скорость. Конечно, если делается запрос в любом случае, то выгоднее его туда и засунуть...
Верстка тем по шаблону, их доработка/переработка, переделка тем с версии smf 1.1 на smf 2.0. Примеры работ - insidestyle.ru
Установка модов (заточка под ваш форум); Моды под заказ; Обновление форума; Правильный перенос; Удаление/лечение вирусов; Устранения ошибок.
Обращаться в ЛС
Мой форум
Модуль анти-спама CleanTalk, сам пользуюсь
Сервера которыми сам пользуюсь - cadedic.ru

Inter

#2
По сабжу:
SELECT pt.post, pt.id_member, m.user_name
FROM post_table AS pt
INNER JOIN members AS m ON (m.id_member = pt.id_member)
ORDER BY pt.id_member DESC
LIMIT 15


Если в members никого нету, то запрос провалится.
Если нужно чтоб запрос не провалился, то вместо INNER JOIN делать LEFT JOIN, но INNER быстрее работает.
I'm the law and you can't beat the law

|censored| 'em and their law

Crack down at sundown

kak2z

Цитата: Inter от 28 октября 2012, 12:34:13
По сабжу:
SELECT pt.post, pt.id_member, m.user_name
FROM post_table as pt
INNER JOIN members AS m ON (m.id_member = pt.id_member)
ORDER BY id_member DESC
LIMIT 15


Если в members никого нету, то запрос провалится.
Если нужно чтоб запрос не провалился, то вместо INNER JOIN делать LEFT JOIN, но INNER быстрее работает.

да я уже разобрался и без join можно))
правда разобрался тогда когда уже сделал немного по колхозному))
Но работает хорошо и быстро) это главное)
Спасибо)
Если нужно что то исправить, обновить, переставить, настроить, сделать форум заново - пишите в ЛС)

Inter

главное правильно условие указать, а как их скрещивать до лампочки
up: свой запрос подправил
I'm the law and you can't beat the law

|censored| 'em and their law

Crack down at sundown