Создание многомерного массива из данных в трех таблицах в MySQL

#php #mysql

#php #mysql

Вопрос:

У меня есть три таблицы в моей базе данных MySQL, и я хочу извлечь все данные из каждой из них и сохранить их в соответствующем массиве. Как я могу это сделать, не используя три отдельных SQL-запроса, например

 $table1_array = "SELECT fid FROM table1" ...;
$table2_array = "SELECT * FROM table2" ...;
$table3_array = "SELECT * FROM table2" ...;
 

В идеале мне нужно выполнить один запрос, чтобы поддерживать производительность.

Редактировать:

Вот разбивка моей структуры таблицы:

 table_photos
pid, aid, caption, src, filename

table_albums
aid, created, count, name

table_feed
fid, timestamp, message, link, caption, description, type, name, pic_src, type, 
filename
 

Спасибо

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

1. Таблицы не имеют общих похожих столбцов и не особенно связаны между собой.

2. @lowe_22 Если таблицы имеют разные структуры, имеют ли они, по крайней мере, одинаковое количество столбцов или почти такое же?

3. Честно говоря, я бы просто сделал это как три отдельных запроса. Самыми дорогостоящими операциями будут циклы выборки. Однако я бы даже не стал беспокоиться об этом, пока это не станет проблемой. Если он не масштабируется и вы не можете удовлетворить свои требования к производительности, тогда побеспокойтесь о том, чтобы сделать что-то сложное с запросом. Но подождите, пока не появятся убедительные доказательства плохой производительности, прежде чем делать что-то странное с ОБЪЕДИНЕНИЕМ трех совершенно не связанных таблиц.

4. @Джейсон Маккрири, я не был уверен, спасибо 🙂 попробуйте с JOIN помощью или CROSS JOIN … Если вы не можете объединить их «обычным» способом, это означает, что вы, вероятно, делаете это неправильно.

5. UNION будет использоваться, когда количество столбцов равно, что здесь не так.

Ответ №1:

table_photos.aid похоже, это ключ foriegn к table_albums.aid . Вы можете объединить первые две таблицы следующим образом

 SELECT * FROM table_photos
JOIN table_albums USING(aid)
 

Но я не вижу никаких очевидных связей с третьей таблицей table_feed , поэтому, возможно, вам следует обработать этот запрос, выполнив цикл в скрипте.

Первым шагом будет выяснить, как связаны эти данные, затем вторым шагом будет написать код для формирования структуры данных.