Соединение SQL, само по себе 3x?

#php #mysql #join

#php #mysql #Присоединиться

Вопрос:

В моей базе данных есть таблица с именем characters . Он отслеживает идентификатор персонажа, имя, marriedto и fathersID. «marriedto» — это идентификатор персонажа, с которым они женаты, а «fathersID» — это идентификатор персонажа отца этого персонажа.

Я хотел бы выполнить оператор join в SQL, который будет извлекать все три имени. Итак, моя таблица может выглядеть так:

 CharID CharName marriedto fatherID
1      Jeremy   2         3
2      Sarah    1         4
3      Charles  5         6
  

Я хочу запустить запрос, чтобы вернуть что-то в этом роде

 Jeremy, Sarah, Charles
  

Я могу заставить одно соединение само по себе произойти, если я хочу, чтобы оно давало мне только два имени, но три ускользают от меня.

Это работает для двоих..

 "SELECT C1.name AS spouse1, C2.name AS spouse2 
        FROM characters AS C1 
            JOIN characters AS C2 
                ON C1.marriedto= C2.characters_ID";
  

И я пробовал это три раза, но это не сработало.

 "SELECT C1.name AS spouse1, C2.name AS spouse2 C3.name AS father
        FROM characters AS C1 
            JOIN characters AS C2 
                ON C1.marriedto= C2.characters_ID
            LEFT JOIN characters AS C3
                ON C1.fathersID = C3.characters_ID"
  

Как я могу выполнить это тройное объединение всего 1 таблицы?

Комментарии:

1. Что насчет вашего запроса, который вы пробовали, не работает? Вы получаете сообщение об ошибке? В вашем примере запроса с тройным соединением есть по крайней мере одна синтаксическая ошибка, которую я вижу — пропущенная запятая после «КАК супруг 2». Кроме того, запрос не соответствует именам столбцов вашей модели данных, но это может быть или не быть частью ваших проблем

2. Это выглядит как нечетное условие WHERE

Ответ №1:

Ваш запрос выглядит нормально.. Я вижу только отсутствие запятой между spouse2 и C3.name .

Комментарии:

1. блин, всегда что-то простое. Спасибо!