У меня есть две таблицы:
+---------------+--------+
| id1 | name |
+---------------+--------+
| 1 | test |
| 2 | teest |
| 3 | teeest |
+---------------+--------+
+-----+------------+---------+-----------+---------+
| id2 | date | morning | afternoon | evening |
+-----+------------+---------+-----------+---------+
| 1 | 2017-12-14 | 1 | 2 | 1 |
| 2 | 2017-12-15 | 2 | 1 | 3 |
+-----+------------+---------+-----------+---------+
Все, что я хочу сделать, это echo
, в php файле, значения второй таблицы, но вместо чисел я хочу повторить имена первой таблицы на их месте.
Может ли кто-нибудь научить меня, как принять этот результат?
Изменение: Когда я использую этот код:
<?php
$sql = mysqli_query($con, "SELECT * FROM table2");
while ($row = mysqli_fetch_array($sql)) {
echo "<center>" . $row['date'] . " " .$row['morning']. " " .$row['afternoon']. " " .$row['evening']. "</center>";
}
?>
у меня есть результат
2017-12-14 1 2 1
2017-12-15 2 1 3
и я хочу это вместо этого:
2017-12-14 test teest test
2017-12-15 teest test teeest
Благодарю.
Вы должны использовать JOIN
.
запрос
select
't2'.'id2',
't2'.'date',
'ta1'.'name' as 'morning',
'ta2'.'name' as 'afternoon',
'ta3'.'name' as 'evening'
from 'table2' as 't2'
join 'table1' as 'ta1'
on 'ta1'.'id1' = 't2'.'morning'
join 'table1' as 'ta2'
on 'ta2'.'id1' = 't2'.'afternoon'
join 'table1' as 'ta3'
on 'ta3'.'id1' = 't2'.'evening';
Выберите значения из первой таблицы в массив и, представляя вторую таблицу, используйте значения второй таблицы в качестве ключей.
Образец:
$names = [1 => 'test', 2 => 'teest', 3 => 'teeest'];
echo $names[$secondrow["morning"]];
Если я правильно понимаю...
Лучше всего иметь INNODB
таблицу с движком INNODB
с отношением между таблицами, то есть foreign key
определенным между второй таблицей и первой таблицей.
Затем вы запустите SQL-запрос в базу данных, используя отношение, которое вы получите, данные из обеих таблиц, а в части SELECT
запроса вы определяете, какие столбцы должны отображаться.
SELECT atable.name, btable.*
FROM btable
JOIN atable ON btable.name_id = atable.id;
Вот мой пример: http://sqlfiddle.com/#!9/e851e0/3
alias
таблицы