2012-05-01 2 views
0

У меня есть две таблицы, как это:выборка таблицы с другими таблицами «условие»

Таблица Название: users

emx | userid 
--------------- 
1 | 1 
2 | 2 

и другая таблица называется bodies

id | emx | text 
-------------------------- 
1 | 1  | Hello 
2 | 2  | How are you? 

Как вы можете видеть , таблица тел имеет emx, номер идентификатора users стол. Теперь, когда я хочу получить сообщение, которое содержит Hello, я просто просматриваю его на bodies и получаю номера emx, после чего я получаю таблицу пользователей с этими номерами emx. Итак, я делаю 2 sql-запроса, чтобы их найти.

Итак, все, что я хочу сделать, это сделать это в 1 SQL-запросе.

Я пробовал некоторые запросы, которые не верны, а также я попробовал JOIN. Пока не повезло. Я просто хочу получить таблицу пользователей с сообщением «Hello» в таблице тел.

Примечание: Я использую PostgreSQL 9.1.3.

Любая идея/помощь приветствуются.

+0

Вы должны показать запросы SQL, которые вы используете. И тот, который вы пробовали, не работает. –

+0

Я удалил его, но в ближайшее время это 'SELECT * FROM x INNER JOIN y ON a = b WHERE x.a = 1'. Ошибка Inner Join вызвала эту ошибку. Вот почему я получил неожиданный результат. Я попробую ответить (и вы, и выгоров). – flower58

ответ

1

Вот как я присоединился бы. Я отказался от точного теста сдерживания.

SELECT users.userid 
FROM users JOIN bodies ON (users.emx = bodies.emx) 
WHERE ⌜true if bodies.text contains ?⌟ 
+0

Человек, это была опечатка! Как я могу это пропустить. Он работал - как предполагалось, – flower58

2
  1. прочитанной документы на how to join tables.
  2. Попробуйте это:
SELECT u.emx, u.userid, b.id, b.text 
     FROM bodies b 
     JOIN users u USING (emx) 
    WHERE b.text ~ 'Hello'; 
Смежные вопросы