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

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

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.06.2014, 21:12   #1
Glowworm
Пользователь
 
Аватар для Glowworm
 
Регистрация: 26.10.2011
Сообщений: 67
По умолчанию Внешний ключ - NULL

У меня есть некая таблица заявки в которой есть поле id_driver, которое ссылается на таблицу drivers. Мне нужно, чтобы в определенные моменты поле id_drivers было пустым, поэтому я для поля id_drivers - поставил галочку на NULL.. Когда я в какой либо записи присваиваю полю id_drivers NULL, то у меня в запросе происходит ошибка и записи не выводятся.. Подскажите, может вообще я неправильно делаю и в чем может быть ошибка???
Glowworm вне форума Ответить с цитированием
Старый 01.06.2014, 21:55   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

СУБД? Текст запроса и ошибки. Скрипт создания таблицы и внешнего ключа
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 01.06.2014, 23:44   #3
Glowworm
Пользователь
 
Аватар для Glowworm
 
Регистрация: 26.10.2011
Сообщений: 67
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
СУБД? Текст запроса и ошибки. Скрипт создания таблицы и внешнего ключа
СУБД - MySQL; таблицы создаю с помощью phpmyAdmin

Две таблицы - applic[id, id_drivers, cost] и таблица drivers [id, F,I,O]

вот текст запроса -
PHP код:
$query "SELECT drivers.F, applic.cost FROM applic, drivers WHERE ((applic.id_drivers = drivers.id))";
$result mysql_query($query);
if (!
$result) die ("Сбой при доступе к базе данных: " mysql_error());
$rows mysql_num_rows($result);
 
for (
$j 0$j $rows; ++$j)
{
$row mysql_fetch_row($result);
echo  
'Фамилия водителя: ' $row[0] . '<br />';
echo  
'Стоимоть: ' .  $row[1] . '<br /><br />';
    } 
Допустим я первой записи в таблице applic полю id_drivers присваиваю NULL, остальные записи имеют нормальные значения

В результате выполнения запроса выводится со второй записи, а первая не выводится, как мне вывести и первую?
Glowworm вне форума Ответить с цитированием
Старый 02.06.2014, 07:32   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А где ошибка? Все правильно выводится. Как спроектировал и заполнил, так и получил. Добавь в условие OR applic.id_drivers IS NULL увидишь и её, но не одну, а все с id_drivers=NULL.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 02.06.2014, 12:43   #5
Glowworm
Пользователь
 
Аватар для Glowworm
 
Регистрация: 26.10.2011
Сообщений: 67
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Добавь в условие OR applic.id_drivers IS NULL увидишь и её, но не одну, а все с id_drivers=NULL.
Вывелись все фамилии со стоимостью для первого поля, где я указала NULL, а мне бы вывести только это поле первое чтобы фамилия была пустая, а цена заполнена... Можно как-нибудь сделать так?
Glowworm вне форума Ответить с цитированием
Старый 02.06.2014, 13:01   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А у самой мысли есть? Как вывести запись, если её нельзя идентифицировать? Меняй подход, не допускай NULL во внешнем ключе, каким-нибудь дополнительным полем регулируй свои хитрости
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 02.06.2014, 13:20   #7
Glowworm
Пользователь
 
Аватар для Glowworm
 
Регистрация: 26.10.2011
Сообщений: 67
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
А у самой мысли есть? Как вывести запись, если её нельзя идентифицировать?
были мысли создать в таблице drivers дополнительное поле со значениями неопределенно или пустыми их оставить... И потом ссылаться на это поле, если мне нужно пустое значение... Это вообще нормальный вариант?
Glowworm вне форума Ответить с цитированием
Старый 02.06.2014, 14:49   #8
Vapaamies
Ваш К. О.
Участник клуба
 
Аватар для Vapaamies
 
Регистрация: 26.12.2012
Сообщений: 1,770
По умолчанию

Нормальный. Почитай в справке про left join/right join.
Vapaamies вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
не могу разобраться с ошибкой "Индекс или ключ не может содержать пустое значение (NULL), когда хочу новую запись в бд добавить mimino46 БД в Delphi 2 10.11.2013 23:50
как создать ссылку(внешний ключ) silwerhof SQL, базы данных 4 06.10.2012 22:59
Добавить внешний ключ в ibexpert Kreadlling БД в Delphi 1 01.04.2012 14:11
Внешний ключ Access Lazio Microsoft Office Access 0 07.12.2011 23:25
z is null sedoyksa JavaScript, Ajax 1 02.11.2011 00:36