Есть таблица
words с полями:
id,
wordid | word |
---|
111 | слово 1 |
222 | слово 2 |
333 | слово 3 |
444 | слово 4 |
555 | слово 5 |
666 | слово 6 |
Есть таблица
test с полями:
id,
word_id_1,
word_id_2 (word_id_* = id из первой таблицы)
id | word_id_1 | word_id_2 |
---|
1 | 111 | 222 |
2 | 111 | 333 |
3 | 111 | 444 |
4 | 111 | 666 |
Можно ли сделать за один запрос следующее:
1. Выбираем из таблицы
test записи, где word_id_1 = id; (цель - получить
word_id_2);
Если бы здесь возвращалась одна запись, все было бы просто, здесь будет возвращаться от 1 до ~100 записей.
2. Получаем из таблицы
words записи, где id = word_id_2 (получить информацию по каждому
id из предыдущего шага);
public function getDetailPage($id) {
$params = [
'id' => $id, // id из таблицы words
];
return $this->db->row('SELECT * FROM words WHERE id = :id', $params);
}
public function row($sql, $params = []) {
$result = $this->query($sql, $params);
return $result->fetchAll(PDO::FETCH_ASSOC);
}
Известно:
id из таблицы
words (в примере он равен 111)
Конечная цель: получить данные по изначально известному
id из таблицы
words, а также получить информацию по привязанным к нему в таблице
test элементам.
Все данные хранятся в первой таблице, во второй - только связи.
Если исходить из примера, должны придти данные из таблицы
words по всем элементам, кроме
id = 555.