PHP
Откуда при выводе строк из БД появляются дубликаты? Строки два раза выводятся + скрин
hostingkartinok.com/show-image.php?id=563d9b648add301c5edcb2d4da0c918f
Добавь к выводу имя автора - станет понятно, откуда дубликаты. Зачем ты вообще делаешь JOIN, если данные из таблицы авторов вообще никак не используются?
Уверен, что таблицы books и autors не имеют столбцов с совпадающими названиями. Потому NATURAL JOIN работает как JOIN без ON - выводятся все возможные комбинации строк books и authors.
Уверен, что таблицы books и autors не имеют столбцов с совпадающими названиями. Потому NATURAL JOIN работает как JOIN без ON - выводятся все возможные комбинации строк books и authors.
Сергей Гудков
Но у меня в таблице нет автора. Попробую добавить в таблицу автора и потом посмотрю что получится. А зачем делаю JOIN не знаю, я еще плохо шарю в php и всё делаю по книге.
1. а зачем в запросе присоединять таблицу авторов. в исходной таблице для книг не указан идентификатор автора.
2. срочно отказывайтесь от функций mysql, переходите на pdo. mysql - устарело и в php 7.0 удалено. См - http://php.net/manual/ru/function.mysql-close.php
2. срочно отказывайтесь от функций mysql, переходите на pdo. mysql - устарело и в php 7.0 удалено. См - http://php.net/manual/ru/function.mysql-close.php
Обратите внимание, в этом запросе нет необходимости указывать какие-либо критерии объединения, поскольку предложение NATURAL JOIN автоматически определяет столбцы, имеющие одинаковые имена в обеих объединяемых таблица, и помещает их в «скрытое» предложение USING. Если первичные и внешние ключи имеют одинаковые имена, этот подход может показаться полезным, однако это не так.
В базе данных Sakila, каждая таблица имеет столбец last_update, который автоматически используется предложением NATURAL JOIN. Таким образом, запрос NATURAL JOIN эквивалентен следующему запросу, который, конечно же, не имеет никакого смысла:
SELECT *
FROM actor
JOIN film_actor USING (actor_id, last_update)
JOIN film USING (film_id, last_update)
Итак, сразу же забудьте о NATURAL JOIN и никогда не используйте этот вариант (за исключением очень редких случаев, таких как объединение диагностических представлений Oracle, например, v$sql NATURAL JOIN v$sql_plan, в целях специализированной аналитики).
В базе данных Sakila, каждая таблица имеет столбец last_update, который автоматически используется предложением NATURAL JOIN. Таким образом, запрос NATURAL JOIN эквивалентен следующему запросу, который, конечно же, не имеет никакого смысла:
SELECT *
FROM actor
JOIN film_actor USING (actor_id, last_update)
JOIN film USING (film_id, last_update)
Итак, сразу же забудьте о NATURAL JOIN и никогда не используйте этот вариант (за исключением очень редких случаев, таких как объединение диагностических представлений Oracle, например, v$sql NATURAL JOIN v$sql_plan, в целях специализированной аналитики).
Похожие вопросы
- Передача json строки php to js
- Как вывести каждую строку из определённого столбца MySQL?
- PHP MYSQL после ввода запроса , отображается пустая строка перед 1 кой, немогу понять Помогите пожалуйста
- PHP. Почему нельзя применять функцию count() к строкам? Ведь строка это тот же массив
- Подключение несколько БД через require
- Как выполнить запрос в бд на php ооп
- Построение связей в таблицах БД
- Как проще, лучше и быстрее из бд получить данные и поместить сразу в переменную или поместить в цикл и оттуда извлекать
- Помогите найти в бд цифру которая находится в переменной php
- Здравствуйте, каким методом лучше проверять на PHP правильность открывающихся и закрывающихся скобок в строке?