Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.05.2022, 21:13   #1
alhon
Форумчанин
 
Регистрация: 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 ? внизу мож получится сделаю скрины таблиц. СПАСИБО
alhon вне форума Ответить с цитированием
Старый 04.05.2022, 21:18   #2
alhon
Форумчанин
 
Регистрация: 05.05.2009
Сообщений: 146
По умолчанию картинка

картинка
Изображения
Тип файла: jpg BD SQL.jpg (106.6 Кб, 0 просмотров)
alhon вне форума Ответить с цитированием
Старый 04.05.2022, 23:24   #3
Valick
Форумчанин
 
Регистрация: 27.04.2022
Сообщений: 493
По умолчанию

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.
Valick вне форума Ответить с цитированием
Старый 05.05.2022, 19:17   #4
alhon
Форумчанин
 
Регистрация: 05.05.2009
Сообщений: 146
По умолчанию

Вот за это я и люблю этот форум, что тут не пишут правильный код в котором ты не разбираешься, а дают дельные советы. Да я спешу написать код в котором не понимаю. я давно пишу сайты и к базам относился мало. только вывод из БД в пхп. И тут надо было сделать вывод. и я капнул по глубже и оказалось, что SQL это НЕ PHP !!! а отдельный язык запросов ВОООТ и т.к. мне не надо делать, а я хочу сам сделать и разобраться подскажите мне либо хорошую современную книгу или курс по SQL СПАСИБО
alhon вне форума Ответить с цитированием
Старый 05.05.2022, 20:03   #5
Valick
Форумчанин
 
Регистрация: 27.04.2022
Сообщений: 493
По умолчанию

alhon, на самом деле хороших книг по MySQL много. Просто некоторые из них написаны более доступным языком. Я бы рекомендовал "Самоучитель MySQL 5" Максим Кузнецов Игорь Симдянов. Вообще у них много хороших книг http://www.softtime.ru/php5/
И пусть версии MySQL и PHP немного устарели, главное это подача материалла. Изучив материал достаточно просто добрать необходимые знания от более новых версий. Жаль, что форум софттайма по известным причинам перестал функционировать. Я много лет общался с авторами этих книг и многому научился.

Цитата:
Сообщение от alhon Посмотреть сообщение
SQL это НЕ PHP
Совершенно верно. РНР - это процедурный и объектно ориентированный язык программирования, SQL - это декларативный язык запросов.
Например циклы - это естественно для РНР и противоестественно для MySQL (всегда говорил если хочется сделать SQL запрос в цикле - значит ты что-то делаешь не правильно)

Последний раз редактировалось Valick; 05.05.2022 в 20:12.
Valick вне форума Ответить с цитированием
Старый 06.05.2022, 00:59   #6
alhon
Форумчанин
 
Регистрация: 05.05.2009
Сообщений: 146
По умолчанию

Спасибо большое я вас понял и обязательно найду книгу и буду разбираться
alhon вне форума Ответить с цитированием
Старый 06.05.2022, 01:24   #7
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Цитата:
Сообщение от Valick Посмотреть сообщение
(всегда говорил если хочется сделать SQL запрос в цикле - значит ты что-то делаешь не правильно)
если только не хочешь положить SQL сервер (т.е. так и задумано)
macomics вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не получается вывести строки, которых нет в одной из таблиц 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