Помогите приджойнить бд

almaz

Новичок
Доброго времени суток! Недавно начал изучать php, с sql запросами совсем все плохо. Нужно объединить две таблицы по одному схожему столбцу под названием "name". Полазив по форумам натолкнулся на full join, но все никак не получается построить запрос чтобы базы друг к другу джойнились. Вот так пробовал:
PHP:
$query  = mysqli_query($db, 'SELECT * FROM `nazvanie1` full join `nazvanie2` on `nazvanie1`.name = `nazvanie2`.name  LIMIT 10, 20');
Помогите пожалуйста разобраться.
 
Последнее редактирование:

almaz

Новичок
@almaz, JOIN соединяет НЕ БАЗЫ, а таблицы.
Все верно, я не так выразился, говорю же что совсем плохо в этом плане... Все таблицы находятся в одной бд, а мне нужно одну к другой приджойнить по сходству в столбце с названием name.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
@almaz, хорошо, пойдем другим путем

Что в этом запросе не понятно?

Код:
SELECT * FROM table1 INNER JOIN table2 ON table1.id = table2.id;
 

almaz

Новичок
@almaz, хорошо, пойдем другим путем

Что в этом запросе не понятно?

Код:
SELECT * FROM table1 INNER JOIN table2 ON table1.id = table2.id;
В том то и дело что понятно, не могу понять почему не работает. Уже и с апострафами пробовал и без, всегда выдает ошибку:
Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in C:\Program Files\VertrigoServ\www\testovaya.php on line 45
На 45 строке следующее:
PHP:
while($row = mysqli_fetch_assoc($result)) {
$id = $row["id"];
$name = $row["name"];

echo "<table><tbody><td>".$id."</td><td>".$name."</td></tbody></table>";
}
Кстати, мне исходя из описания мне inner join не подходит. Мне нужно полностью обьединить две таблицы.
 
Последнее редактирование:

AnrDaemon

Продвинутый новичок
И что может означать эта ошибка, как вы думаете?
Кстати, мне исходя из описания мне inner join не подходит.
Какое слово в описании навело вас на эту мысль?
И что в вашем понимании "полностью объединить"? Может, вам вообще не JOIN надо?
 

almaz

Новичок
И что может означать эта ошибка, как вы думаете?

Какое слово в описании навело вас на эту мысль?
И что в вашем понимании "полностью объединить"? Может, вам вообще не JOIN надо?
Я прочитал описание и посчитал что это мне подходит (т.е результатом объединения будут записи, которые присутствуют в каждой из таблиц).
Ну я так подозреваю что в запросе проблема, конкретно в апострофах скорее всего, хотя не факт т.к я уже разные вариации пробовал, но все-равно не работает.
Последний запрос который пробовал:
PHP:
$result = $mysqli->query("SELECT * FROM `nazvanie1` FULL OUTER JOIN `nazvanie2` on `nazvanie1.name`=`nazvanie2.name` LIMIT 10, 20");
 

AnrDaemon

Продвинутый новичок
Забудьте про запросы. Скажите словами, что нужно получить в итоге?
А ещё лучше - покажите на примере.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
@almaz, `nazvanie1.name` должно быть в апострофах, но не так. А и таблица и поле - отдельно
 

almaz

Новичок
Забудьте про запросы. Скажите словами, что нужно получить в итоге?
А ещё лучше - покажите на примере.
Имеется две таблицы, в обоих из них есть общее поле name(с идентичными данными), хотелось бы склеить обе таблицы чтобы расширить информацию.
 

AnrDaemon

Продвинутый новичок
Ну. INNER JOIN классический. Осталось вам только понять, что до вас хотел донести @c0dex
 

almaz

Новичок
@almaz, `nazvanie1.name` должно быть в апострофах, но не так. А и таблица и поле - отдельно
Возможно я вас неправильно понял, попробовал вот так:
PHP:
$result = $mysqli->query("SELECT * FROM `nazvanie1` FULL OUTER JOIN `nazvanie2` on `nazvanie1`.`name` = `nazvanie2`.`name` LIMIT 10, 20");
Потом вот так:
PHP:
$result = $mysqli->query("SELECT * FROM `nazvanie1` FULL OUTER JOIN `nazvanie2` on `nazvanie1`.'name' = `nazvanie2`.'name' LIMIT 10, 20");
И вот так:
PHP:
$result = $mysqli->query("SELECT * FROM `nazvanie1` FULL OUTER JOIN `nazvanie2` on `nazvanie1`.name = `nazvanie2`.name LIMIT 10, 20");
Вобщем все та же ошибка:(.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
@almaz, может ты попробуешь уже выполнить запрос в консоли mysql, или хотя бы в phpmyadmin, мы тут гадать не умеем, что у тебя там за ошибки
 

fixxxer

К.О.
Партнер клуба
1) у тебя не sql, а php-код, SQL-запросы надо отлаживать в SQL-клиенте, а только потом уже писать код.
2) приведи пример двух таблиц и что надо получить в результате
3) в mysql нет full outer join-а. Но он почти никогда не нужен, я за 15 лет вспоминаю только один случай, когда мне понадобилось.
 

AnrDaemon

Продвинутый новичок
OUTER JOIN - это данные, находящиеся только в одной из таблиц, но не в двух сразу. Как ты собрался таким запросом что-то расширять?
 

almaz

Новичок
1) у тебя не sql, а php-код, SQL-запросы надо отлаживать в SQL-клиенте, а только потом уже писать код.
2) приведи пример двух таблиц и что надо получить в результате
3) в mysql нет full outer join-а. Но он почти никогда не нужен, я за 15 лет вспоминаю только один случай, когда мне понадобилось.
1. Спасибо, возьму на заметку
2. Как и говорил ранее, с двух таблиц хочу циклом while сделать вывод информации (общей из 2х таблиц).
3. Не знал т.к не очень с запросами, впрочем как и с php (только учусь), думал если есть в sql то можно и в php применить.
Как тогда быть? Напишите кто-нибудь решение данной задачи.
 

WMix

герр M:)ller
Партнер клуба
попробовал вот так:
The identifier quote character is the backtick (`):
https://dev.mysql.com/doc/refman/5.7/en/identifiers.html
Кстати, мне исходя из описания мне inner join не подходит. Мне нужно полностью обьединить две таблицы.
https://www.xaprb.com/blog/2006/05/26/how-to-write-full-outer-join-in-mysql/
Нужно объединить две таблицы по одному схожему столбцу под названием "name"
это как раз join
 
Сверху