Чтобы выбрать все записи, связанные с заказом, непосредственно из таблицы закупок:
SELECT * FROM purchasedProductsTable WHERE orderId = 1;
Чтобы выбрать все записи, связанные с заказом, путем присоединения к таблице заказов:
[ 111]
Если вам нужен только порядок 1 & amp; 4:
SELECT * FROM orderTable OT JOIN purchasedProductsTable PT ON (PT.orderId = OT.id) WHERE OT.id IN (1,4);
Порядок сначала по самой старой дате заказа:
SELECT * FROM orderTable OT JOIN purchasedProductsTable PT ON (PT.orderId = OT.id) ORDER BY OT.order_date DESC;
raw_input()
возвраты представляет в виде строки, как закодировано средствами UI или ОС. Трудность знает, который является тем декодированием. Вы могли бы делать попытку следующего:
import sys, locale
text= raw_input().decode(sys.stdin.encoding or locale.getpreferredencoding(True))
, который должен работать правильно в большинстве случаев.
Нам нужно больше данных о не рабочие сравнения Unicode для помощи Вам. Однако это мог бы быть вопрос нормализации. Рассмотрите следующее:
>>> a1= u'\xeatre'
>>> a2= u'e\u0302tre'
a1
и a2
эквивалентны, но не равны:
>>> print a1, a2
être être
>>> print a1 == a2
False
, Таким образом, Вы могли бы хотеть использовать unicodedata.normalize()
метод:
>>> import unicodedata as ud
>>> ud.normalize('NFC', a1)
u'\xeatre'
>>> ud.normalize('NFC', a2)
u'\xeatre'
>>> ud.normalize('NFC', a1) == ud.normalize('NFC', a2)
True
, Если Вы даете нам больше информации, мы могли бы быть в состоянии помочь Вам больше, все же.
Это должно работать. raw_input
возвраты строка байтов, которая необходимо декодировать использование корректного кодирования для получения Вашего unicode
объект. Например, следующие работы для меня в соответствии с Python 2.5 / Terminal.app / OSX:
>>> bytes = raw_input()
日本語 Ελληνικά
>>> bytes
'\xe6\x97\xa5\xe6\x9c\xac\xe8\xaa\x9e \xce\x95\xce\xbb\xce\xbb\xce\xb7\xce\xbd\xce\xb9\xce\xba\xce\xac'
>>> uni = bytes.decode('utf-8') # substitute the encoding of your terminal if it's not utf-8
>>> uni
u'\u65e5\u672c\u8a9e \u0395\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u03ac'
>>> print uni
日本語 Ελληνικά
Что касается сравнения unicode строки: можно ли отправить пример, где сравнение не работает?
Я не действительно уверен, какой формат Вы подразумеваете "под форматом Unicode", существуют несколько. UTF-8? UTF-16? В любом случае необходимо смочь считать нормальную строку с raw_input
и затем декодировать ее с помощью строк decode
метод:
raw = raw_input("Please input some funny characters: ")
decoded = raw.decode("utf-8")
, Если у Вас есть другой вход, кодирующий просто, используют "utf-16" или безотносительно вместо "utf-8". Также см. документы модулей кодеков для различных видов кодировки.
Сравнение затем должно работать просто великолепно с ==
. Если у Вас есть строковые литералы, содержащие специальные символы, необходимо снабдить префиксом их "u" для маркировки их как unicode:
if decoded == u"äöü":
print "Do you speak German?"
И если Вы хотите произвести эти строки снова, Вы, вероятно, хотите закодировать их снова в желаемом кодировании:
print decoded.encode("utf-8")
В общем случае, вероятно, не возможно сравнить строки unicode. Проблема состоит в том, что существует несколько способов составить те же символы. Простой пример акцентируется римские символы. Хотя существуют кодовые точки для в основном всех наиболее часто используемых символов с диакритикой, это также корректно для создания их из безударных основных букв и диакритического знака без интервалов. Эта проблема является более значительной во многих нероманских алфавитах.