PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
new01
Отправлено: 28 Января, 2020 - 16:01:26
Post Id



Посетитель


Покинул форум
Сообщений всего: 301
Дата рег-ции: Июнь 2010  
Откуда: Челябинск


Помог: 1 раз(а)




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

К примеру, у меня есть таблица mysql, где одно поле - это id записи в другой таблице, которое является ссылкой на нее (связи). Код получается следующим:

PHP:
скопировать код в буфер обмена
  1.  
  2. while($row = mysql_fetch_array($result)){
  3. $order = mysql_fetch_array(mysql_query("SELECT *  FROM `orders` WHERE `id` = '$row[order_id]'"));
  4. }
  5.  


А можно ли как-то $order получать исходя из ссылки? Какой тогда от неё смысл?

(Отредактировано автором: 28 Января, 2020 - 16:01:58)



-----
new01
 
 Top
LIME
Отправлено: 28 Января, 2020 - 16:52:46
Post Id



Активный участник


Покинул форум
Сообщений всего: 10570
Дата рег-ции: Нояб. 2010  


Помог: 317 раз(а)




new01 пишет:
где одно поле - это id записи в другой таблице, которое является ссылкой на нее (связи)
- внешний ключ это называется, можно просто "ключ на таблицу"
на вот варианты со смыслом
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT *  FROM `orders` WHERE `id` = (SELECT order_id FROM tbl WHERE id = 1 LIMIT 1);
  2. SELECT * FROM tbl
  3.     JOIN orders ON tbl.order_id = orders.id
  4. WHERE id = 1;


-----
DDD
 
 Top
Vladimir Kheifets
Отправлено: 29 Января, 2020 - 07:10:23
Post Id



Посетитель


Покинул форум
Сообщений всего: 498
Дата рег-ции: Март 2017  
Откуда: Германия, Бавария


Помог: 24 раз(а)




new01 пишет:
Здравствуйте!

К примеру, у меня есть таблица mysql, где одно поле - это id записи в другой таблице, которое является ссылкой на нее (связи). Код получается следующим:

PHP:
скопировать код в буфер обмена
  1.  
  2. while($row = mysql_fetch_array($result)){
  3. $order = mysql_fetch_array(mysql_query("SELECT *  FROM `orders` WHERE `id` = '$row[order_id]'"));
  4. }
  5.  

А можно ли как-то $order получать исходя из ссылки? Какой тогда от неё смысл?


Добрый день!
Есть ещё вариант:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT orders.*  FROM tbl,orders WHERE orders.id=tbl.id AND tbl.id=1;
Удачи!
(Добавление)
LIME пишет:
на вот варианты со смыслом
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT *  FROM `orders` WHERE `id` = (SELECT order_id FROM tbl WHERE id = 1 LIMIT 1);

в чём смысл LIMIT 1? м.б. несколько id = 1?

(Отредактировано автором: 29 Января, 2020 - 07:17:41)

 
 Top
LIME
Отправлено: 29 Января, 2020 - 10:17:04
Post Id



Активный участник


Покинул форум
Сообщений всего: 10570
Дата рег-ции: Нояб. 2010  


Помог: 317 раз(а)




Vladimir Kheifets пишет:
в чём смысл LIMIT 1? м.б. несколько id = 1?
в данном случае особо нет смысла, это скорее лишний раз подчеркнул что подзапрос обязан вернуть именно одно значение
+ есть такая привычка везде писать LIMIT 1 где подразумевается одно значение во избежании будущих багов при изменениях(хотя это зависит от политики обработки ошибок) и немного оптимизации
http://www.php.su/mysql/manual/?...MIT_optimisation
просто привычка


-----
DDD
 
 Top
LIME
Отправлено: 01 Февраля, 2020 - 14:04:40
Post Id



Активный участник


Покинул форум
Сообщений всего: 10570
Дата рег-ции: Нояб. 2010  


Помог: 317 раз(а)




Vladimir Kheifets "очевидное лучше неочивдного"(с)


-----
DDD
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB