|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
04.05.2022, 21:13 | #1 |
Форумчанин
Регистрация: 05.05.2009
Сообщений: 146
|
Вывести из нескольких таблиц из одной БД PHP и SQL MySQL
Доброе время суток. Пишу сюда т.к. тут лучшие программисты, которые отвечают. Я уже столько видео и статей посмотрел и в каждой практически одно и тоже, но у меня не работает Помогите вывести данные из нескольких таблиц. Смотрите есть БД probabd
В ней 4 таблицы: nasekom, ptici, zhivot. и таблица avtor и в ней 2 поля id_а и avtor В каждой таблицы по 5 записей и одинаковые поля: id, name, stat, avtor, opisanie, id_G т.е. не содержимое полей, а сами поля. Так вот все таблицы связаны с таблицей avtor по id_G и id_а. И пишу запрос: $result = mysqli_query($db, "SELECT n.name NAS, p.name PT, z.name ZHIV FROM avtor a,nasekom n, ptici p, zhivot z WHERE a.id_a = n.id_G and a.id_a = p.id_GI and a.id_a = z.id_G"); while ($perem = mysqli_fetch_assoc ($result )) { print_r($perem); echo '<br />'; } ?> И в резултате я вывожу поле name из всех таблиц, но проблема в том, что они выводяться с повтором т.е. Array ( [NAS] => петух [PT] => жук [ZHIV] => слон ) Array ( [NAS] => гусь [PT] => жук [ZHIV] => слон ) Array ( [NAS] => петух [PT] => тля [ZHIV] => слон ) Array ( [NAS] => гусь [PT] => тля [ZHIV] => слон ) Array ( [NAS] => кукушка [PT] => кузнечик [ZHIV] => жираф ) Array ( [NAS] => курица [PT] => муравей [ZHIV] => кракодил ) Array ( [NAS] => ласточка [PT] => муравей [ZHIV] => кракодил ) Array ( [NAS] => курица [PT] => змея [ZHIV] => кракодил ) Array ( [NAS] => ласточка [PT] => змея [ZHIV] => кракодил ) Array ( [NAS] => петух [PT] => жук [ZHIV] => бегемот ) Array ( [NAS] => гусь [PT] => жук [ZHIV] => бегемот ) Array ( [NAS] => петух [PT] => тля [ZHIV] => бегемот ) Array ( [NAS] => гусь [PT] => тля [ZHIV] => бегемот ) Array ( [NAS] => кукушка [PT] => кузнечик [ZHIV] => кенгуру ) Как ведете повторяются и главное повторяются как-то по id и не понимаю в чём проблема конфликт id с id_G ? внизу мож получится сделаю скрины таблиц. СПАСИБО |
04.05.2022, 21:18 | #2 |
Форумчанин
Регистрация: 05.05.2009
Сообщений: 146
|
картинка
картинка
|
04.05.2022, 23:24 | #3 |
Форумчанин
Регистрация: 27.04.2022
Сообщений: 494
|
1) Научитесь давать имена таблицам и полям на английском языке. Это абсолютно не сложно при наличии гугл переводчика.
2) Перекрёстное объединение таблиц (JOIN или как в вашем случае запятая без условия ON) в основном применяют с группировкой (GROUP BY) и используют редко. Без группировки используют LEFT JOIN. Использование RIGHT JOIN считается дурным тоном (если человек представляет структуру связи между таблицами, то несложно обходиться исключительно LEFT JOIN) и условие объединения таблиц надо писать в блоке ON. WHERE используют для ограничений результатов выборки. 3) Налицо непонимание принципов построения таблиц и законов нормализации. 4) Лучше словами опишите стоящую перед вами задачу (вот тут https://tproger.ru/explain/xyproblem/ немного о том как правильно задавать вопросы) Последний раз редактировалось Valick; 04.05.2022 в 23:36. |
05.05.2022, 19:17 | #4 |
Форумчанин
Регистрация: 05.05.2009
Сообщений: 146
|
Вот за это я и люблю этот форум, что тут не пишут правильный код в котором ты не разбираешься, а дают дельные советы. Да я спешу написать код в котором не понимаю. я давно пишу сайты и к базам относился мало. только вывод из БД в пхп. И тут надо было сделать вывод. и я капнул по глубже и оказалось, что SQL это НЕ PHP !!! а отдельный язык запросов ВОООТ и т.к. мне не надо делать, а я хочу сам сделать и разобраться подскажите мне либо хорошую современную книгу или курс по SQL СПАСИБО
|
05.05.2022, 20:03 | #5 |
Форумчанин
Регистрация: 27.04.2022
Сообщений: 494
|
alhon, на самом деле хороших книг по MySQL много. Просто некоторые из них написаны более доступным языком. Я бы рекомендовал "Самоучитель MySQL 5" Максим Кузнецов Игорь Симдянов. Вообще у них много хороших книг http://www.softtime.ru/php5/
И пусть версии MySQL и PHP немного устарели, главное это подача материалла. Изучив материал достаточно просто добрать необходимые знания от более новых версий. Жаль, что форум софттайма по известным причинам перестал функционировать. Я много лет общался с авторами этих книг и многому научился. Совершенно верно. РНР - это процедурный и объектно ориентированный язык программирования, SQL - это декларативный язык запросов. Например циклы - это естественно для РНР и противоестественно для MySQL (всегда говорил если хочется сделать SQL запрос в цикле - значит ты что-то делаешь не правильно) Последний раз редактировалось Valick; 05.05.2022 в 20:12. |
06.05.2022, 00:59 | #6 |
Форумчанин
Регистрация: 05.05.2009
Сообщений: 146
|
Спасибо большое я вас понял и обязательно найду книгу и буду разбираться
|
06.05.2022, 01:24 | #7 |
Участник клуба
Регистрация: 17.04.2022
Сообщений: 1,833
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Не получается вывести строки, которых нет в одной из таблиц | KBO | SQL, базы данных | 5 | 13.11.2020 12:16 |
Как в одной форме вывести данные из двух таблиц по связующему полю. | Znaharkms | Microsoft Office Access | 8 | 17.05.2018 00:06 |
Как в report.rdlc в таблице вывести значения не одной таблицы,а нескольких таблиц | Babur4iK | C# (си шарп) | 0 | 30.03.2014 20:31 |
Выборка из нескольких таблиц | averardo | SQL, базы данных | 3 | 18.06.2013 00:13 |
Одновременный просмотр нескольких эл таблиц в одной книге Excel | Raikhman | Microsoft Office Excel | 7 | 03.11.2010 08:11 |