Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.04.2009, 17:24   #1
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
Вопрос Вопрос по ID

Еще вопрос). Ну вот решил я свою проблему с ID, но появилась другая. Вопрос в приложении
Изображения
Тип файла: jpg Вопрос.jpg (27.3 Кб, 168 просмотров)
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 18.04.2009, 17:33   #2
ArtInt
Форумчанин
 
Аватар для ArtInt
 
Регистрация: 06.03.2009
Сообщений: 583
По умолчанию

Если ты ищешь данные по полю где ID=2, тогда и выведется информация только по данному полю, но никак не онднофамильцы (если у другого однофамильца ID=0). Вот если бы у однофамильца ID=2 был также равен 2 то вывелась бы информация о двух полях.
Или если бы ты задавал запрос где указавыл Фамилия='Иванов', то тогда вывелись все поля, где фамилия Иванов.
Не стыдно чего-то не знать, стыдно не стремиться к знаниям.
ArtInt вне форума Ответить с цитированием
Старый 18.04.2009, 17:48   #3
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

То есть если я пишу такой запрос:
Код:
SELECT *
FROM table_marks
WHERE Фамилия='Иванов' AND ПРЕДМЕТ='история'
то получу такую строчку:
Иванов Иван Иванович 1 1 1 1 история 2008
а если так:
Код:
SELECT * 
FROM table_marks
WHERE Фамилия='Иванов' AND ПРЕДМЕТ='история' AND ПРЕДМЕТ='химия'
то получу такие строчки:

Иванов Иван Иванович 1 1 1 1 история 2008
Иванов Иван Иванович 3 3 3 3 химия 2010
.
Так будет?)
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 18.04.2009, 17:56   #4
ArtInt
Форумчанин
 
Аватар для ArtInt
 
Регистрация: 06.03.2009
Сообщений: 583
По умолчанию

Да будет именно так
Не стыдно чего-то не знать, стыдно не стремиться к знаниям.
ArtInt вне форума Ответить с цитированием
Старый 18.04.2009, 18:07   #5
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

ArtInt, спасибо за разъяснения
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 18.04.2009, 20:50   #6
S@fer
Форумчанин
 
Аватар для S@fer
 
Регистрация: 29.01.2009
Сообщений: 411
По умолчанию

Цитата:
Сообщение от artemavd Посмотреть сообщение
То есть если я пишу такой запрос:
Код:
SELECT * 
FROM table_marks
WHERE Фамилия='Иванов' AND ПРЕДМЕТ='история' AND ПРЕДМЕТ='химия'
то получу такие строчки:

Иванов Иван Иванович 1 1 1 1 история 2008
Иванов Иван Иванович 3 3 3 3 химия 2010
.
Так будет?)
немного не так. Когда используешь оператор AND он будет искать, чтобы в поле "Предмет" было и то и другое, а что бы искать или то или другое то используй OR, т.е
Код:
SELECT * 
FROM table_marks
WHERE Фамилия='Иванов' AND (ПРЕДМЕТ='история' OR ПРЕДМЕТ='химия')

или так, точно не помню
SELECT * 
FROM table_marks
WHERE Фамилия='Иванов' AND (ПРЕДМЕТ='история' OR 'химия')
S@fer вне форума Ответить с цитированием
Старый 18.04.2009, 20:53   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Код:
SELECT * 
FROM table_marks
WHERE Фамилия='Иванов' AND ПРЕДМЕТ='история' AND ПРЕДМЕТ='химия'
Иванов Иван Иванович 1 1 1 1 история 2008
Иванов Иван Иванович 3 3 3 3 химия 2010
Так будет?)
НЕТ!
Так НЕ БУДЕТ!
Запрос вернёт 0 (ноль) записей.
учим чем означают и чем отличаются логические операция конъюнкция и дизъюнкция (AND и OR)
А записей ни одной не выберется,
так как я уверен, что нет ни одной записи, где "предмет" одновременно равен "История" и "Химия"

надо так:
Код:
SELECT * 
FROM table_marks
WHERE Фамилия='Иванов' AND (ПРЕДМЕТ='история' OR ПРЕДМЕТ='химия')
p.s. так же рекомендую использовать операцию приведения регистра букв (эта функция по разному называется в разных СУБД,
в Oracle - это Upper()
в MS Access - это UCase()
Тогда не будет зависеть от того, как Вы написали "История" или "история" или "ИСТОРИЯ"
запрос будет выглядеть так: ... where ... Upper(Предмет) = 'ИСТОРИЯ'

ДОБАВЛЕНО.
S@fer, сорри за пост. опередили Вы меня на несколько минут... долго я писал...

Последний раз редактировалось Serge_Bliznykov; 18.04.2009 в 20:55.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 19.04.2009, 15:23   #8
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

добавлю
а еще лучше, чтобы не зависеть от написания "История" или "история" или "ИСТОРИЯ", использовать адишники этих предметов

З.Ы.: чота неясно из картинки - каким образом связаны ФИО с предметами. или справочника "Предметы" вообще нет и есть сразу таблица-связка айди_ФИО, предмет, год?
soleil@mmc вне форума Ответить с цитированием
Старый 19.04.2009, 15:42   #9
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Для обсчитываемого класса вводится название предмета, по которому идет обсчет. Вот.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 19.04.2009, 15:49   #10
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

я ни прилады ни БД не видел - судить сложно
но в принципе, имея таблицу ФИО и таблицу Предметов, не составляет никаких сложностей выводить их в какой-нить комбик(в простой комбик через стринглист, в ДБкомбик - оно уже будет связанным листом, ставящим однозначное соответствие между айди и описанием, типа айди_фио + ФИО, айди_предмета + Предмет)
выбирая в комбике предмет, получаешь айдишник для поиска

потому что лайковый посик все-таки дольше будет нежели по айдишнику
а если еще и правильные индексы присутствуют...

Последний раз редактировалось soleil@mmc; 19.04.2009 в 15:51.
soleil@mmc вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос наверное про функции, а так точно даже не знаю про что. (Вопрос начинющего #6) Albert2008 Общие вопросы Delphi 4 21.08.2008 15:33
вопрос по сокетам и общение как в ICQ.Сложный вопрос... Руслантус Общие вопросы C/C++ 2 12.08.2008 21:10
Вопрос по C++ Sanek_ntsk Свободное общение 3 09.01.2008 14:45
Вопрос по 1 С Aleksandr Свободное общение 0 08.06.2007 09:29