Russian Qt Forum
Апрель 28, 2024, 07:12 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Вопрос не совсем по куте, т.е. совсем не по куте, но прошу помочь.  (Прочитано 9284 раз)
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« : Август 26, 2008, 14:07 »

Есть 2 таблицы:
таблица1:
номерКарточки
площадь

таблица2
номерКарточки
фамилия
дата
площадь

Задача вывести в модель:
1.номерКарточки, 1.площадь, 2.площадь

По первой таблице все нормально, а вот во второй с одним номерКарточки может быть сразу несколько записей, из которых нужна только последняя. Вот мой запрос
SELECT 1.номер карточки, 1. площадь,
(SELECT top 1 2.площадь FROM таблица2 2 WHERE 2.номерКарточки=1.номерКарточки ORDER BY 2.дата DESC)
FROM таблица1 1
Он не работает, если с одним номерКарточки в таблице2 связаны несколько записей. 2 дня бьюсь и никак...
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Alex03
Гость
« Ответ #1 : Август 26, 2008, 14:34 »

panter_dsd Прпробуйте попонятней изъясняться.
Если описываете схему в БД, то не плохо было бы указать также на связи, а также отношения типа один к одному, один ко многим, и т.д.
Хоть SQL и стандартизован, но стандартов этих далеко не 1, а вариантов поддержки в реальных реалицациях СУБД и того больше (далеко не все поддерживают "SELECT top 1 ..."), так что не плохо бы сказать что за БД и её версию.
Числовые алиасы таблиц - "замечательный" стиль, мне теперь интересно какие СУБД их поддерживают.

Цитировать
Он не работает, если с одним номерКарточки в таблице2 связаны несколько записей.
Это можно прочитать так:
Он не работает, если с одним номерКарточки в таблице2 связаны несколько записей в таблице1.
а можно так:
Он не работает, если с одним номерКарточки в таблице1, в таблице2 связаны несколько записей.

И фраза "Он не работает" что означает? Какие тексты ошибок и т.д.?

Ну и на последок ДА, лучше такие вопросы задавать в более профильном форуме (например на sql.ru) чем в форуме по Qt. Впрочем на sql.ru скорее пошлют учить матчасть.
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #2 : Август 26, 2008, 14:57 »

2 panter_dsd: Если вопрос "совсем не по куте", зачем его постить в раздел по Qt? о_О. На форуме есть и другие разделы:

http://prog.org.ru/forum/board_34_0.html
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #3 : Август 26, 2008, 14:58 »

На sql.ru тоже запостил, только молчат пока.
Цитировать
Числовые алиасы таблиц - "замечательный" стиль
Это для примера. Если бы я привел нормальный код, то вообще нихрена бы не поняли.
Цитировать
так что не плохо бы сказать что за БД и её версию
Никакой БД. 2 файла dbf III. Коннекчусь через ODBC, вот строка соединения:
Код:
DRIVER={Microsoft dBase Driver (*.dbf)};FIL={dBase III;};DefaultDir=каталог
Связь только по полю номерКарточки.
Цитировать
Это можно прочитать так:
Он не работает, если с одним номерКарточки в таблице2 связаны несколько записей в таблице1.
а можно так:
Он не работает, если с одним номерКарточки в таблице1, в таблице2 связаны несколько записей.
Он не работает, если с одним номерКарточки в таблице2 связаны несколько записей в таблице2.
Не работает, т.е. говорит, что подзапрос выдает больше одной записи, что запрещено.
2 panter_dsd: Если вопрос "совсем не по куте", зачем его постить в раздел по Qt? о_О. На форуме есть и другие разделы:

http://prog.org.ru/forum/board_34_0.html
Упс... Не заметил.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Tonal
Гость
« Ответ #4 : Август 26, 2008, 16:39 »

ODBC над dbf-ом поддерживает довольно ограниченное подмножество SQL-я. Так что вполне может и не работать.
Так что либо реализовать всё вручную, либо перелезть на нормальный сервер.
А почему именно dbf?
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #5 : Август 26, 2008, 18:25 »

ODBC над dbf-ом поддерживает довольно ограниченное подмножество SQL-я. Так что вполне может и не работать.
Так что либо реализовать всё вручную, либо перелезть на нормальный сервер.
А почему именно dbf?
Да потому, что СУБД на работе писана на foxpro. Так уже задолбали эти dbf'ки... Вот попробую завтра данные перелить на птицу и там уже сделать выборку.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #6 : Август 27, 2008, 10:31 »

Перегнал данные в SQLite, все заработало. Всем спасибо.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.05 секунд. Запросов: 22.