Есть таблица
words с полями:
id,
word| id | 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.