Делая значение таблицы равным другому значению другой таблицы - PullRequest
0 голосов
/ 31 декабря 2008

У меня небольшая проблема с программой, которую я пишу. У меня есть таблица - запасы, которые содержат информацию (товары, штрих-коды и т. Д.) О предметах, хранящихся в холодильнике. Затем у меня есть другая таблица - магазин, который действует как магазин, содержащий множество товаров и их штрих-коды. Некоторые из товаров в таблице магазинов находятся в таблице запасов на данный момент, и есть буленское поле, называемое складом, которое сообщает нам этот продукт находится в таблице запасов или нет, если он равен 1, он находится в холодильнике, если он равен 0, его нет в холодильнике. Два поля в таблице запасов - количество и количество. Количество - это то, что находится в холодильнике на данный момент, количество - это то, что должно быть в холодильнике всегда. Когда что-то вынимается из холодильника, количество этого продукта падает на 1. Каждый штрих-код в таблице запасов имеет соответствующий код в таблице магазинов. Мне нужно сделать запрос к базе данных из программы Python, которая будет заказывать продукты из таблицы магазинов, когда количество (что в холодильнике) меньше количества (что должно быть в холодильнике всегда). Таким образом, вам нужно взять штрих-код строки в таблице запасов, где сумма меньше суммы, и сопоставить ее со штрих-кодом в таблице магазинов. Затем в строке этого соответствующего штрих-кода необходимо установить stock = 1.

Я был бы очень рад, если бы кто-нибудь мог помочь мне с этим, поскольку мне действительно трудно написать эту функцию. Ниже приведены функции регистрации и проверки, если это поможет.

* Checkin 1006 *

def check_in(): 
    db = MySQLdb.connect(host='localhost', user='root', passwd='$$', db='fillmyfridge')
    cursor=db.cursor(MySQLdb.cursors.DictCursor)
    user_input=raw_input('please enter the product barcode that you wish to checkin to the fridge: \n')
    cursor.execute("""update shop set stock = 1 where barcode = %s""", (user_input))
    db.commit()
    numrows = int(cursor.rowcount)
    if numrows >= 1:
        row = cursor.fetchone()
        print row["product"]
        cursor.execute('update stock set amount = amount + 1 where product = %s', row["product"])
        db.commit()
        cursor.execute('udpate shop set stock = 1 where barcode = user_input')
        db.commit()
    else:
        new_prodname = raw_input('what is the name of the product and press enter: \n')
        cursor.execute('insert into shop (product, barcode, category) values (%s, %s, %s)', (new_prodname, user_input, new_prodname))
        cursor = db.cursor()
        query = ('select * from shop where product = %s', (new_prodname))
        cursor.execute(query):
        db.commit()
        numrows = int(cursor.rowcount)
        if numrows<1:
            cursor.execute('insert into atock (barcode, quantity, amount, product) values (%s, 1, 1, %s)', (user_input, new_prodname))
            db.commit()
            cursor.execute('insert into shop (product, barcode, category, stock) values (%s, %s, %s, 1)', (new_prodname, user_input, new_prodname))
            print new_prodname 
            print 'has been added to the fridge stock'
        else:
            cursor.execute('update atock set amount = amount + 1 where product = %s', (new_prodname))
            db.commit()
            cursor.execute('insert into shop (product, barcode, category, stock) values (%s, %s, %s, 1)', (new_prodname, user_input, new_prodname))
            print new_prodname 
            print 'has been added to the fridge stock'

выписка

import MySQLdb

def check_out():
    db = MySQLdb.connect(host='localhost', user='root', passwd='$$', db='fillmyfridge')
    cursor=db.cursor()
    user_input=raw_input('please enter the product barcode you wish to remove from the fridge: \n')
    query = cursor.execute('update stock set instock=0, howmanytoorder=howmanytoorder + 1, amount = amount - 1 where barcode = %s', (user_input))
    if cursor.execute(query):
        db.commit()
        print 'the following product has been removed from the fridge nd needs to be ordered'
        cursor.execute('update shop set stock = 0 where barcode = %s' (user_input)
        db.commit()
    else:
        return 0

Ответы [ 2 ]

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

Итак, если я правильно понял, у вас есть следующие таблицы:

Запас с хотя бы штрих-кодом , количество и количество столбец

Магазин с хотя бы штрих-кодом и запасом колонка

Я не понимаю, зачем вам нужен этот столбец stock в таблице магазинов, потому что вы можете легко получить товары, которые есть в наличии, с помощью такого соединения:

SELECT barcode, ... FROM Stock ST JOIN Shop SH ON ST.barcode = SH.barcode;

Очевидно, что вы должны также выбрать некоторые другие столбцы из таблицы Магазина, иначе вы можете просто выбрать все из таблицы Stock.

Вы можете получить список товаров, которые необходимо заказать (если сумма меньше количества):

SELECT barcode FROM Stock ST WHERE ST.amount < ST.quantity;
0 голосов
/ 31 декабря 2008

Попробуйте сделать вопрос короче. Я думаю, это вызовет больше ответов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...