Создание SQL-запроса в двух таблицах - PullRequest
0 голосов
/ 31 декабря 2008

Мне интересно, можно ли сделать SQL-запрос, который выполняет ту же функцию, что и 'select products where barcode in table1 = barcode in table2». Я пишу эту функцию в программе Python. После вызова этой функции будет ли таблица присоединена навсегда или только во время работы этой функции? Благодарю.

Ответы [ 6 ]

10 голосов
/ 31 декабря 2008
SELECT t1.products
FROM [Table1] t1
INNER JOIN [Table2] t2 ON t2.barcode = t1.barcode
7 голосов
/ 31 декабря 2008

Я думаю, вы хотите объединить две таблицы:

http://www.w3schools.com/Sql/sql_join.asp

1 голос
/ 31 декабря 2008

Что-то вроде:

SELECT * FROM table1 WHERE barcode IN (SELECT barcode FROM table2)

Это то, что вы ищете?

0 голосов
/ 31 декабря 2008

Вот способ обсудить дизайн таблицы в этих случаях на основе моделирования ролей объектов. (Да, я понимаю, что это только косвенно связано с вопросом.)

У вас есть товары и штрих-коды. Продукты однозначно идентифицируются с помощью кода продукта (например, «A2111»; штрих-коды однозначно идентифицируются по значению (например, 1002155061).

Продукт имеет штрих-код. Вопросы: Может ли продукт не иметь штрих-кода? Может ли один и тот же продукт иметь несколько штрих-кодов? Могут ли несколько продуктов иметь один и тот же штрих-код? (Если у вас есть опыт работы с этикетками UPC, вы знаете, что ответ на все эти вопросы - ИСТИНА.)

Итак, вы можете сделать несколько утверждений:

Продукт (код) имеет ноль или более штрих-кода (значения).
Штрих-код (значение) имеет один или несколько Продуктов (код). - допущение: у нас штрих-коды не существуют независимо, если они не / не были / не будут связаны с продуктами).

Что напрямую (через вашу модель ORM) приводит к схеме с двумя таблицами:

Продукт
ProductCode (PK) Описание и т. Д.

ProductBarcode
ProductCode (FK) BarcodeValue
- с натуральным первичным ключом из двух частей: ProductCode + BarcodeValue

и вы связываете их вместе, как описано в других ответах.

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

0 голосов
/ 31 декабря 2008

Вот пример внутреннего объединения двух таблиц на основе общего поля в обеих таблицах.

ВЫБЕРИТЕ table1.Products ИЗ таблицы 1 ВНУТРЕННЕЕ СОЕДИНЕНИЕ table2 на table1.barcode = table2.barcode ГДЕ table1.Products не является нулевым

0 голосов
/ 31 декабря 2008
SELECT table1.*, table2.* FROM table1 left join table2 on table1.barcode = table2.barcode
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...