Jump to content
  • 0

связь данных из разных таблиц


unnam
 Share

Question

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

сейчас, я вывожу таблицы так:

...
while(list($данные1, $данные 2, $данные 3)=mysql_fetch_row($запрос))
<td>$данные1</td>
...

спасибо.

Link to comment
Share on other sites

14 answers to this question

Recommended Posts

  • 0

возможно я сейчас напишу бред но всё же

вы выбираете данные из 3-х таблиц

например так

$result = mysql_query(SELECT поля FROM таблица)

$result1 = mysql_query(SELECT поля FROM таблица1)

$result2 = mysql_query(SELECT поля FROM таблица2)

может создать массив в который вы будете заносить все переменные result и измнять его.

P.S хотя скорее всего это бред

Link to comment
Share on other sites

  • 0

напишите конкретнее с именами таблиц БД и именами полей. Скажите, что хотите получить, в каком виде вывести, что с этим потом делать? Не знаю, как другим, но мне не до конца понятен вопрос.

Link to comment
Share on other sites

  • 0
А как пробовал, покажи код.


...SELECT title,text FROM table1 UNION SELECT title,text FROM table2 UNION SELECT title,text FROM table3...

так?

пробовал вот так

$MAIN_QUERY="
SELECT waiting_list_id,notify_email,notified,notify_date FROM jos_vm_waiting_list
UNION
SELECT product_s_desc,product_sku,product_thumb_image FROM jos_vm_product
UNION
SELECT name FROM jos_users
ORDER BY waiting_list_id DESC
"

Link to comment
Share on other sites

  • 0

Э, брат, нет. Union для сведения одинакового набора полей из разных источников в одну таблицу. А для связывания данных используйте left join, right join, inner join. Читайте подробнее. Еще есть смысл воспользоваться поиском в google или даже yandex.

Edited by Searcher
Link to comment
Share on other sites

  • 0
Читайте подробнее

читал и пользовался, что гуглом, что яндексом, но все источники ссылались на две-три статьи :angry:. теперь по сути - делал, по примеру, вот так (пока только запрос, без сведения):

SELECT t1.waiting_list_id, t1.notify_email,t1.notified,t1.notify_date,
t2.product_s_desc,t2.product_s_desc, t2.product_sku, t2.product_thumb_image,
t3.name
FROM jos_vm_waiting_list AS t1, jos_vm_product AS t2, jos_users AS t3;

вот, что ответил мускул

MySQL client ran out of memory
Link to comment
Share on other sites

  • 0

Ну еще бы ему не быть в ауте, от таких запросов-то :). Ведь просто JOIN, без условия ON либо WHERE, тупо комбинирует все возможные сочетания всех записей всех таблиц. Для трех таблиц по тысяче записей в каждой запрос попытается выбрать миллиард комбинаций...

По каким полям таблицы связаны? Насколько я понимаю, waiting_list должен как-то связывать юзеров с товарами, т.е. в этой таблице должны быть id-шники соотв. записей из двух др. таблиц. Это так?

Edited by SelenIT
Link to comment
Share on other sites

  • 0
Насколько я понимаю, waiting_list должен как-то связывать юзеров с товарами, т.е. в этой таблице должны быть id-шники соотв. записей из двух др. таблиц. Это так?

ну да, waiting_list это основная таблица, к ней (к номеру заказу, если быть точным) привязываются из другой таблицы название товара, картинка зака3а и из третьей таблицы - имя заказчика.

Link to comment
Share on other sites

  • 0
...... и связать их между собой, т.е. если удаляю данные из одной ячейки, то удаляются данные и из других ячеек (соответственно таблиц).

mysql не поддерживает триггеров до версии 5.0, соответственно, средствами БД этого сделать нельзя. Или я не так понял этот вопрос? :angry:

Link to comment
Share on other sites

  • 0
ну да, waiting_list это основная таблица, к ней (к номеру заказу, если быть точным) привязываются из другой таблицы название товара, картинка зака3а и из третьей таблицы - имя заказчика.

так вот вы и ответили на свой вопрос!

Все эти таблицы связаны по номеру заказа. Вот и используйте join по этим полям.

где-то так:

SELECT t1.waiting_list_id, t1.notify_email, t1.notified, t1.notify_date, t2.product_s_desc, t2.product_sku, t2.product_thumb_image, t3.name
FROM (jos_vm_waiting_list AS t1 INNER JOIN jos_vm_product AS t2 ON t1.номер_заказа = t2.номер_заказа) INNER JOIN jos_users AS t3 ON t1.номер_заказа = t3.номер_заказа;

Link to comment
Share on other sites

  • 0

если не трудно, можете прояснить вот этот момент:

ON t1.номер_заказа = t2.номер_заказа

т.е. исходя из этого, получается:

ON t1.waiting_list_id= t2.waiting_list_id

именно почему один и тот же идентификатор.

спасибо.

Edited by unnam
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy