2015-12-28 3 views
0

Я имею две таблицы, структура приведена нижеобъединение таблиц с где предложение

Таблица 1

  • schid
  • имя
  • стоимость
  • типа

Таблица 2

  • schid
  • детали
  • oldcost

Я не могу написать запрос для отображения записей из таблицы 2, выпускаемой допускают типа А или В (Здесь, как вы можете видеть поле типа в таблица 1). Здесь еще одна вещь, которую нужно добавить, заключается в том, что schid не является первичным ключом. Запрос, который я выполняю, возвращает больше записей, чем ожидалось. Я думаю, что из-за присоединения могу выполнить его без использования соединения.

ответ

0
SELECT * 
FROM Table1 
JOIN Table2 ON Table1.schid=Table2.schid 
WHERE Table1.type='A' 
    OR Table1.type='B' 
0

Это помогло бы:

SELECT t2.schid, t2.details, t2.oldcost 
FROM Table2 t2 
    JOIN Table1 t1 
     ON t1.schid = t2.schid 
WHERE t1.type IN ('A', 'B'); 
0

Это должно получить только таблицы 2 записи, которые соответствуют критериям.

SELECT t2.* 
FROM Table2 t2 
JOIN Table1 t1 ON t1.schid = t2.schid 
WHERE t1.type = 'A' 
OR t1.type = 'B'; 
+0

я попробовал этот запрос он работает в каком-то степени, но есть проблема schid не является первичным ключом, и в результате я извлечение больше записей, чем ожидалось – Ricky

+0

Поскольку таблица 2 не имеет типа поле, поэтому нужно использовать поле типа из таблицы 1. Единственное общее поле для обеих таблиц - это schid. Имеет смысл использовать schid для соединения обеих таблиц. Поскольку schid не является первичным ключом, сложно предложить решение без дополнительной информации о вашем ожидаемом результате. Если вы беспокоитесь о том, что запрос возвращает повторяющиеся записи, используйте разное ключевое слово в инструкции select, чтобы удалить их. Неспособность использовать соединение приведет к декартовому продукту, то есть запрос вернет больше записей, чем вы ожидаете. – SathishPurushothaman

0
SELECT t2.* 
FROM `Table2` t2 
JOIN `Table1` t1 ON t2.`schid`=t1.`schid` 
WHERE t1.`type` IN ('A','B'); 
+0

Один кодовый блок не дает хорошего ответа. Пожалуйста, добавьте объяснения (почему он решает проблему, где была ошибка и т. Д.) –

Смежные вопросы