MySQL СОЕДИНЯЕТ две таблицы по одному значению и принимает другие результаты (без этого значения) - PullRequest
0 голосов
/ 03 декабря 2018

У меня возникла проблема с запросом mySQL.

Таблица A такова:

  • A.id
  • A.value1
  • A.user

Таблица B :

  • B.id
  • B.user

Мне нужно найти значение value_that_i_need из запроса путем поиска B.user .Но мне не нужны только значения с A.user, мне нужны все значения из таблицы A с тем же A.id (внутри таблицы A), который соответствует B.user.

ТакМне нужны все отличные идентификаторы (где B.user = A.user ) и поиск их внутри таблицы A по A.id.

Я хочу избежать 2 разных запросов!Уже перепробовал разные JOIN, у меня ничего не работает.

EDIT

Хорошо, я постараюсь объяснить проблему проще.

I have this table: 
+---------+------------+
| id_user | another_id |
+---------+------------+

id_user -> unique id for each user
another_id -> an id related to something like a group

another_id может бытьТо же самое для большего количества пользователей, но мне нужно взять только пользователей, которые находятся в моих же группах.Поэтому мне нужно будет проверить свои группы (выполнив поиск по моему id_user), а затем я должен увидеть всех пользователей с моим идентичным another_id.

Проблема в том, что если я сделаю запрос примерно так:

SELECT * FROM table0 AS t0, something_like_groups AS slg    
JOIN user_inside_group as uig ON slg.id_group=uig.group_id AND slg.id_user='my_user_id'
WHERE slg.id='id_group' AND t0.user_id=uig.user_id

На самом деле мне нужно объединить 3 таблицы, но проблема в том, что мне нужно найти «группу» внутри себя и получить ВСЕ сведения обо всех пользователях внутри моей группы.(без дополнительного запроса)

1 Ответ

0 голосов
/ 03 декабря 2018

Возможно, вы просто хотите найти минимальный идентификатор, основанный на пользователе b, а затем получить все строки из которых совпадают.например

drop table if exists t,t1;
create table t( id int,user varchar(10));
create table t1( id int,user varchar(10));


insert into t values
(1,'aaa'),(1,'bbb'),(2,'ccc');
insert into t1 values
(1,'bbb'),(2,'ccc')
;

select t.id,t.user 
from t
join
(
select t1.user,min(t.id) minid
from t1
join t on t.user = t1.user
group by t1.user
) s
on t.id = s.minid;

+------+------+
| id   | user |
+------+------+
|    1 | aaa  |
|    1 | bbb  |
|    2 | ccc  |
+------+------+
3 rows in set (0.00 sec)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...