Хорошо, я не лучший в JOIN'ах, и после всех этих лет работы с MySQL вы думаете, что я был бы сейчас как минимум минимально приличным.Полагаю, я никогда не работал над чем-то невероятно сложным, пока не стоит присоединиться к столу.Так что вот, я немного запутался, нуждаясь в полезном примере, чтобы привести меня в движение, что-то, что имеет отношение к моим фактическим данным, которые я могу придумывать или рассказывать, потому что все чтения, которые я делаю в Интернете, где-то просто даюту меня головные боли на данный момент.Я думаю, что, возможно, застрял в мифологии о том, что JOIN - трудная вещь, они не кажутся такими, но когда я пытался, я терпел неудачу.Так или иначе, я работаю с PHP в качестве серверного кодирования, и я верю, что MySQL 5.
Так что в некоторой степени это конструкция.
У меня есть таблица информация иТаблица Соединения .
Соединения имеет: member_id
, connection_id
, active
Информация имеет: firstname
, lastname
, gender
, member_id
Я должен сказать, что таблицы содержат больше данных для каждой таблицы, но, насколько я понимаю, мне нужно написать запрос, чтобы я мог использовать member_id в качестве соединителя / внешнего ключа.Где я могу использовать обе стороны информации.Мне нужно знать, если active is 1
, а затем мне нужно знать все вышеупомянутые столбцы для информации.
Я пытался
SELECT member_id,
connection_id,
active,
firstname,
lastname,
gender,
member_id
FROM connections, information
WHERE connection.member_id = information.member_id AND
connection.active = 1
, и я пытался
SELECT * FROM connections, information
WHERE connection.member_id = information.member_id AND
connection.active = 1
С первым, который я получаю, member_id является амбициозным, что понятно до такой степени, которая, я думаю, является причиной совпадения столбцов между двумя таблицами.Тогда второй запрос меня не обслуживает, так как он работает только с одним человеком.
Моя конечная цель - найти все соединения для определенного member_id в таблице соединений, одновременно собирая всю информацию об этих соединениях из информационной таблицы, используя connection_id как то же самое, что и member_idв информационной таблице.
Итак, с точки зрения непрофессионалов, если я не имею смысла, скажем, я хотел перечислить всех моих друзей из БД.Моя таблица соединений позволяет мне узнать, с какими людьми я связан, где member_id - это мой идентификатор, а connection_id - это мои друзья, member_id в другой таблице.Надеюсь, это имеет больше смысла.И именно здесь у меня возникают проблемы с моим запросом, и я пытаюсь написать его правильно.Если бы я мог получить рабочий нормальный образец этого, я думаю, что я мог бы лучше понять, что JOIN's не помогает, что я также не могу выяснить, какой тип JOIN лучше всего подходит для моих нужд, я полагаю.
РЕДАКТИРОВАТЬ ....
Хорошо, согласно запросу из комментария ниже.Примерные данные ожидаемого вывода из таблиц, которые выглядят примерно так:
Таблица соединений
member_id, connection_id, active
1 | 2 | 1
1 | 3 | 1
1 | 4 | 1
1 | 5 | 1
2 | 1 | 1
2 | 5 | 1
3 | 1 | 1
Информационная таблица
member_id, firstname, lastname, gender, ...other unimportant rows for this query
1 | Chris | Something | m | ....
2 | Tony | Something | m | ....
3 | Brandon | Something | m | ....
4 | Cassie | Something | f | ....
5 | Jeff | Something | m | ....
6 | John | Something | m | ....
теперь из таблицы соединений мне нужно собрать все идентификаторы соединения, связанные с моим member_id, где active равен 1, затем из информационной таблицы собрать всех имя, фамилию, пол .. Теперь я знаю, что могу сделать этот 2 шаг, где я объединяю всеАргументы connection_id из соединений затем запускают их через какой-то цикл, и один за другим получают итоговые идентификаторы из первого запроса, но мне это кажется немного неясным и интенсивным процессом, которого я хочу избежать, что приводит меня сюда .. В настоящее время из моегоисходный запрос, опубликованный для многих пользователей, которые до сих пор делятся, пытаясь помочь моим результатам, дает
1 | Chris | Something | m | 2
1 | Chris | Something | m | 3
1 | Chris | Something | m | 4
1 | Chris | Something | m | 5
то, что я хотел бы увидеть, это что-то вроде
2 | Tony | Something | m
3 | Brandon | Something | m
4 | Cassie | Something | f
5 | Jeff | Something | m
После просмотрапри этом я полагаю, что мне также нужно знать столбец friendID, который совпадает с моим member_id, но это что-товыяснить после этого начального препятствия