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

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

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.03.2015, 10:18   #1
Microplankton
Пользователь
 
Аватар для Microplankton
 
Регистрация: 02.03.2015
Сообщений: 24
Восклицание Как получить с помощью PHP из базы MySql, содержимое, из двух таблиц с одинаковым именем столбца.

Здравствуйте.

Как получить с помощью PHP из базы MySql, содержимое, из двух таблиц с одинаковым именем столбца.

Пример:

таблица MySql tab1:
id | name_product
-----------
1 | карандаш
2 | яблоко
3 | принтер


таблица MySql tab2:
id | name
-----------
1 | 1
2 | 1
3 | 3
4 | 2


----

$query="SELECT * FROM tab1, tab2 WHERE tab2.name = tab1.id";
$result=mysql_query($query) or die(mysql_error());

while($res=mysql_fetch_array($resul t)){
echo "$res['......"; // что ту писать? надо получить id tab2
echo "=";
echo "$res['name_product']"; // получаем name_product tab1
echo " id = ";
echo "$res['id']"; // надо получить id tab1
echo "<br>";
}


---

Как получить id tab1 и tab2 если имя столбца id совпадает?
Microplankton вне форума Ответить с цитированием
Старый 13.03.2015, 10:31   #2
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 29.09.2007
Сообщений: 1,824
По умолчанию

SELECT * FROM tab1 T1
LEFT JOIN tab2 T2 ON T1.id = T2.name

Или так:

SELECT tab1.id AS ID_TAB1, tab2.id AS ID_TAB2 FROM tab1 T1
LEFT JOIN tab2 T2 ON T1.id = T2.name

Код:
SELECT * FROM tab1, tab2 WHERE tab2.name = tab1.id
В вашем случаи как и в моем первом варианте без AS, id продублируется с другим названием например id2

Иногда чтобы не возникало путаницы с id приписывают префикс, например id_tab1 или id_prod чтобы вы сразу могли понять что этот id с такой то таблицы..


например так:

Код:
таблица MySql tab1:
id_tab1 | name_product
-----------
1 | карандаш
2 | яблоко
3 | принтер


таблица MySql tab2:
id_tab2 | name
-----------
1 | 1
2 | 1
3 | 3
4 | 2
Я часть той силы, что вечно хочет зла, но вечно совершает благо..

Последний раз редактировалось Stanislav; 13.03.2015 в 10:40. Причина: дополнить мысль
Stanislav вне форума Ответить с цитированием
Старый 13.03.2015, 11:03   #3
Microplankton
Пользователь
 
Аватар для Microplankton
 
Регистрация: 02.03.2015
Сообщений: 24
По умолчанию

Цитата:
Сообщение от Stanislav Посмотреть сообщение
SELECT * FROM tab1 T1
LEFT JOIN tab2 T2 ON T1.id = T2.name

Или так:

SELECT tab1.id AS ID_TAB1, tab2.id AS ID_TAB2 FROM tab1 T1
LEFT JOIN tab2 T2 ON T1.id = T2.name

Код:
SELECT * FROM tab1, tab2 WHERE tab2.name = tab1.id
В вашем случаи как и в моем первом варианте без AS, id продублируется с другим названием например id2

Иногда чтобы не возникало путаницы с id приписывают префикс, например id_tab1 или id_prod чтобы вы сразу могли понять что этот id с такой то таблицы..


например так:

Код:
таблица MySql tab1:
id_tab1 | name_product
-----------
1 | карандаш
2 | яблоко
3 | принтер


таблица MySql tab2:
id_tab2 | name
-----------
1 | 1
2 | 1
3 | 3
4 | 2


Спасибо, но пока не понятно,


"В вашем случаи как и в моем первом варианте без AS, id продублируется с другим названием например id2"

Что значить продублируется с другим названием например id2? За счет чего?

как в варианте:
SELECT * FROM tab1 T1
LEFT JOIN tab2 T2 ON T1.id = T2.name

получить в
--
while($res=mysql_fetch_array($resul t))....
$res['id']
...
---
id из первой и второй таблицы?

Вроде как алиас имени самой колонки не поменялся? Или я что-то не понял, подскажите пожалуйста?



P.S.
Цитата:
Иногда чтобы не возникало путаницы с id приписывают префикс, например id_tab1 или id_prod чтобы вы сразу могли понять что этот id с такой то таблицы..
В моем случае, к сожалению вариант с разным именем колонок в таблицах не выход. Хотелось бы узнать как получить данные с одинаковыми именами колонок с помощью запроса и php кода запроса.

Последний раз редактировалось Microplankton; 13.03.2015 в 11:17.
Microplankton вне форума Ответить с цитированием
Старый 13.03.2015, 11:19   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Stanislav
Код:
SELECT T1.id AS ID_TAB1, T2.id AS ID_TAB2 FROM tab1 T1
LEFT JOIN tab2 T2 ON T1.id = T2.name
Код:
while($res=mysql_fetch_array($resul t))....
echo "$res['ID_TAB1']";
echo "$res['ID_TAB2']";
...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.03.2015, 11:35   #5
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 29.09.2007
Сообщений: 1,824
По умолчанию

Что значить продублируется с другим названием например id2? За счет чего?

У вас совпадают имена колонок чего быть не может по этой причине mysql добавляет к имени 1 таким образом первый id у вас так и будет называться id а второй будет называться id1

Как взять: (вам написал Serge_Bliznykov)

Код:
while($res=mysql_fetch_array($result))....
echo "$res['id']";
echo "$res['id1']";
...
Для того чтобы увидеть этот механизм выполните свой запрос скажем в phpmyadmin и увидите что mysql вам нарисует колонку с именем id1

НО это не правильно ИМХО.


Если же вы не можете приписать префикс к ID хотя я не могу понять не одной причины по которой вы не можете этого сделать, то пишите мой второй вариант с перечислением полей

Код:
SELECT T1.id AS ID_TAB1, T2.id AS ID_TAB2 FROM tab1 T1
LEFT JOIN tab2 T2 ON T1.id = T2.name


Поясните пожалуйста что это у вас за такой случай?

Код:
В моем случае, к сожалению вариант с разным именем колонок в таблицах не выход
Я часть той силы, что вечно хочет зла, но вечно совершает благо..

Последний раз редактировалось Stanislav; 13.03.2015 в 11:38.
Stanislav вне форума Ответить с цитированием
Старый 13.03.2015, 11:38   #6
Microplankton
Пользователь
 
Аватар для Microplankton
 
Регистрация: 02.03.2015
Сообщений: 24
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Код:
while($res=mysql_fetch_array($resul t))....
echo "$res['ID_TAB1']";
echo "$res['ID_TAB2']";
...
Спасибо, всем большое, работает как надо!
Microplankton вне форума Ответить с цитированием
Старый 13.03.2015, 11:42   #7
Microplankton
Пользователь
 
Аватар для Microplankton
 
Регистрация: 02.03.2015
Сообщений: 24
По умолчанию

Цитата:
Сообщение от Stanislav Посмотреть сообщение
Что значить продублируется с другим названием например id2? За счет чего?

У вас совпадают имена колонок чего быть не может по этой причине mysql добавляет к имени 1 таким образом первый id у вас так и будет называться id а второй будет называться id1

Как взять: (вам написал Serge_Bliznykov)

Код:
while($res=mysql_fetch_array($result))....
echo "$res['id']";
echo "$res['id1']";
...
Для того чтобы увидеть этот механизм выполните свой запрос скажем в phpmyadmin и увидите что mysql вам нарисует колонку с именем id1

НО это не правильно ИМХО.


Если же вы не можете приписать префикс к ID хотя я не могу понять не одной причины по которой вы не можете этого сделать, то пишите мой второй вариант с перечислением полей

Код:
SELECT T1.id AS ID_TAB1, T2.id AS ID_TAB2 FROM tab1 T1
LEFT JOIN tab2 T2 ON T1.id = T2.name


Поясните пожалуйста что это у вас за такой случай?

Код:
В моем случае, к сожалению вариант с разным именем колонок в таблицах не выход
Спасибо большое, очень помогли, сразу не разобрался, но вы все подробно описали, стало понятно.

По поводу почему я не могу сейчас использовать префикс, это потому что уже есть код, и очень много запросов во многих файлах php к данному столбцу, много рутины чтобы переделать запросы, проще использовать ваш вариант с аиласом.
Еще раз большое спасибо.
Microplankton вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выбрать 2 фигуры с одинаковым именем GAS1979 Microsoft Office Excel 5 14.10.2014 17:04
Как получить список таблиц другой базы Access anevgeniy69 Microsoft Office Access 2 12.11.2012 17:40
Как узнать с помощью PHP, существует ли таблица в БД MySQL? motorway PHP 10 27.09.2010 15:01
Как создать RSS с помощью PHP, MySQl. Revival001 PHP 6 12.07.2009 19:49
Как оптимизировать запрос MySQL с выборкой из двух таблиц. Johnatan SQL, базы данных 6 13.04.2008 03:10