выбор из нескольких таблиц с помощью mysql

#php #mysql

#php #mysql

Вопрос:

На днях мой запрос был настроен следующим образом

 $query = "SELECT card_id,title,description,meta_description,seo_keywords,price 
FROM cards,card_cheapest order by card_id";
  

Как вы можете видеть, я выбирал card_id,title,description,meta_description,seo_keywords из таблицы cards , и цена была взята из cheapest_card . Они оба имеют card_id общее (в обеих таблицах). Однако я столкнулся с небольшой проблемой. Когда я запускаю запрос в navicat lite, я получаю сообщение об ошибке "card_id is ambiguous" . Я делал что-то не так?

Комментарии:

1. вы хотели объединить таблицы?

2. Ошибка говорит, что у 2 таблиц одинаковое имя столбца, DB не определяет, какой из них выбрать, поэтому вам нужно указать псевдоним для каждой таблицы в имени и использовать этот псевдоним для ссылки на конкретный столбец для его извлечения.

Ответ №1:

Когда в 2 или более таблицах есть столбец с одинаковым именем, вы должны указать таблицу, из которой вы хотите, чтобы этот столбец был.

т.е.:

 $query = "SELECT cards.card_id,title,description,meta_description,seo_keywords,price
FROM cards,card_cheapest order by card_id";
  

Кроме того, вы действительно хотите выполнить запрос таким образом, без предложения WHERE / JOIN, чтобы определить, как ОБЪЕДИНИТЬ две таблицы?

 $query = "SELECT cards.card_id,title,description,meta_description,seo_keywords,price 
FROM cards,card_cheapest WHERE cards.card_id = card_cheapest.card_id 
ORDER BY card_id";
  

Ответ №2:

Если у вас одинаковое имя столбца в двух таблицах, из которых вы выбираете, вам нужно добавить к части в SELECT одно из имен таблицы (не имеет значения, какое, если это одни и те же данные)

например SELECT cards.card_id, ...

РЕДАКТИРОВАТЬ: Однако ответ cularis гораздо более понятен, чем мой, и обратите внимание на объединение двух столбцов card_id, если вы хотите получить правильные результаты.

Ответ №3:

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

В вашем случае у вас есть два варианта:

cards.card_id или card_cheapest.card_id.

Также я согласен с @cularis, вам, вероятно, лучше выполнить объединение, но все же вам нужно будет указать, какой card_id вы хотите выбрать: тот, что из cards или card_cheapest.

Комментарии:

1. Спасибо всем. Я все еще не совсем понимаю JOIN, поэтому я его не использовал. Но я ценю помощь!