2013-10-24 4 views
0

Я ОЧЕНЬ новичок в SQL и не знаю, что об этом много, но я быстро учащийся. У меня есть база данных с идентификаторами Item и количеством в руке (qoh) вместе с некоторыми другими столбцами, с которыми у меня нет проблем. Проблема в том, что когда я говорю ему, чтобы дать мне столбец идентификатора элемента с столбцом qoh, он дает мне почти 500 строк для каждого отдельного элемента, потому что qoh отличается, поэтому у меня буквально есть около 12 миллионов строк. Теперь, что я ищу, это самое последнее количество для каждого элемента. Я предполагаю, что это отношения «один ко многим», и поскольку я ниже noobie для SQL, я даже не знаю, с чего начать. Это то, что я до сих пор:отношение одного к многим со многими столбцами

SELECT DISTINCT item_id, qty_on_hand 
FROM database.inv_mast, database.inv_loc 
ORDER BY item_id ASC 

О, и я использую Microsoft SQL Server Management Studio,

Вот что я хочу:

| item_id |qty_on_hand| 
|123456789| 93  | 
|456789123| 87  | 
|789456123| 74  | 

т.д.

Но что я получаю:

| item_id |qty_on_hand| 
|123456789| 85  | 
|123456789| 82  | 
|123456789| 92  | 

и т. Д.

Я получаю тот же item_id как минимум 4000 раз, потому что база данных сообщает мне, что qoh был буквально каждую секунду времени, так как у нас был предмет. Мне нужно только то, что находится на складе во время выполнения запроса. Я прошу прощения за всю нубость, но я буквально не знаю SQL.

+2

Добавьте 'создать table' заявления 2 таблиц в вопросе. –

ответ

1

от статья FROM database.inv_mast, database.inv_loc создает декартовый продукт. Ограничьте это, используя условие WHERE.

3

Вы делаете крест, просто используя «,». Я думаю, что вам нужно сделать внутреннее соединение.

SELECT DISTINCT im.item_id, qty_on_hand 
FROM database.inv_mast im 
INNER JOIN database.inv_loc in on im.item_id = in.item_id 
ORDER BY item_id ASC 

Вы также должны смотреть влево и вправо.

Таким образом, в целом, используя «» как с помощью перекрестного соединения

Вам действительно нужно научиться присоединяется понимать эти вопросы, проверить сайт ниже.

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

+1

, если item_id находится в обеих таблицах, вам нужно будет определить, какой из них использовать в выборе и порядке тоже. И, возможно, группа item_id, так что SUM (qty_on_hand) также может быть извлечен. – BWS

+0

Мне нравится ваш ответ, но не ссылка на w3fools. Этот сайт полон ошибок. –

+0

К счастью, item_id находится только в одной из таблиц. Я думаю, что мне просто трудно объяснить это правильно. Я пробовал то, что написал @Thomas, и ему не нравится слово «in». Мне удалось получить столбец, в котором перечислены последние изменения даты, но он также дает каждый раз второй. Итак, теперь у меня есть 4000 строк на один элемент, позволяющий мне узнать количество в каждый момент времени, так как у нас был элемент! Настолько разочаровывающе! Эта база данных, которую я использую, действительно огромна, и я был брошен волкам в поисках списка инвентаря с использованием SQL без какой-либо подготовки. – user2917504

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