Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.80/15: Рейтинг темы: голосов - 15, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 02.03.2018
Сообщений: 50

ID имеет тип varchar

04.03.2018, 01:38. Показов 3806. Ответов 74
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как связать таблицы с помощью JOIN если id одной из таблиц (или обоих) имеют тип varchar/nchar?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.03.2018, 01:38
Ответы с готовыми решениями:

Ошибка преобразования значения varchar в тип данных int"
Нужно цифру из выбранного ряда в dataGridView1 разделить на 3 и вывести результат в текстбокс sumprtxt выдает ошибку Ошибка...

Сделать проверку на колонку, чтобы значения не повторялись (тип - varchar)
Вообщем нужно сделать проверку на колонку, чтобы значения не повторялись (тип - varchar). Слышал, что можно unique constraint делать...

Преобразование типа данных varchar в тип данных datetime привело к выходу значения за пределы диапазона
public Form_List(string a) { str = a; InitializeComponent(); dgDocum.DataSource =...

74
0 / 0 / 0
Регистрация: 02.03.2018
Сообщений: 50
06.03.2018, 07:32  [ТС]
Студворк — интернет-сервис помощи студентам
Понял, нельзя конвертировать из одного типа в другой. Но как исправить? Понятия не имею.
0
Эксперт .NET
 Аватар для Usaga
14745 / 9519 / 1364
Регистрация: 21.01.2016
Сообщений: 35,914
06.03.2018, 07:57
Infidel, в большинстве случаев можно конвертировать.

Цитата Сообщение от Infidel Посмотреть сообщение
Но как исправить? Понятия не имею.
Ещё раз повторяю: вы нашли месте, где у вас ошибка? В тексте исключения сказано, что вы пытаетесь привести строку 'ALFKI' к числу. Вы нашли это место? Вы сами говорили, что некоторые идентификаторы у вас текстовые. Какие из них используются в JOIN-ах?

Сколько уже можно одно и то же тут вам талдычить?
0
0 / 0 / 0
Регистрация: 02.03.2018
Сообщений: 50
06.03.2018, 08:26  [ТС]
Какие из них используются в JOIN-ах?
Orders.CustomerID и Customers.CustomerID
0
Эксперт .NET
 Аватар для Usaga
14745 / 9519 / 1364
Регистрация: 21.01.2016
Сообщений: 35,914
06.03.2018, 08:40
Infidel, Ну вот и смотрите, какое из этих полей текстовое и измените его тип на нормальный числовой.
0
0 / 0 / 0
Регистрация: 02.03.2018
Сообщений: 50
06.03.2018, 09:19  [ТС]
Оба текстовые. Пробовал оба менять через CAST, та же ошибка, "Converting not ALFKI to int" или как-то так.
0
 Аватар для pincet
1655 / 1154 / 173
Регистрация: 23.07.2010
Сообщений: 6,914
06.03.2018, 09:19
ТС, ты ответы хоть изредка читаешь?
0
Эксперт .NET
 Аватар для Usaga
14745 / 9519 / 1364
Регистрация: 21.01.2016
Сообщений: 35,914
06.03.2018, 09:21
Infidel, если они оба текстовые, то проблема не в этом.

Добавлено через 46 секунд
Infidel, прекратите уже наугад тыкаться. Покажите скрипты создания используемых в запросе таблиц, покажите весь запрос целиком.
0
0 / 0 / 0
Регистрация: 02.03.2018
Сообщений: 50
06.03.2018, 09:26  [ТС]
SQL
1
SELECT ShipName, ContactName, ProductName, CategoryName FROM Categories JOIN Products ON Categories.CategoryID = Products.CategoryID JOIN Suppliers ON Products.SupplierID = Suppliers.SupplierID JOIN Customers ON Suppliers.SupplierID = Customers.CustomerID JOIN Orders ON Customers.CustomerID = Orders.CustomerID
0
Эксперт .NET
 Аватар для Usaga
14745 / 9519 / 1364
Регистрация: 21.01.2016
Сообщений: 35,914
06.03.2018, 09:27
Infidel, а скрипты создания используемых тут таблиц? Мне нужно увидеть какие у кого типы полей, раз вам самому это не "по глазам".
0
Эксперт .NET
 Аватар для Usaga
14745 / 9519 / 1364
Регистрация: 21.01.2016
Сообщений: 35,914
06.03.2018, 09:29
И да, только сейчас заметил:
Миниатюры
ID имеет тип varchar  
0
 Аватар для pincet
1655 / 1154 / 173
Регистрация: 23.07.2010
Сообщений: 6,914
06.03.2018, 09:29
Цитата Сообщение от Infidel Посмотреть сообщение
Customers ON Suppliers.SupplierID = Customers.CustomerID
чувак, прочти уже всю ветку с начала, а?
0
Эксперт .NET
 Аватар для Usaga
14745 / 9519 / 1364
Регистрация: 21.01.2016
Сообщений: 35,914
06.03.2018, 09:30
Вы выполняете SELECT-запрос, командой, которая ничего не возвращает. Это чего такое?

Добавлено через 50 секунд

Не по теме:

pincet, ему это не поможет. Тут, видимо, носом нужно ткнуть.

0
0 / 0 / 0
Регистрация: 02.03.2018
Сообщений: 50
06.03.2018, 09:34  [ТС]
Скрипта нет, это тестовая база Northwind, и тамошний скрипт на 10 000 строк кода. Там ошибок быть не может, это база Microsoft.

Приложу диаграмму.
Миниатюры
ID имеет тип varchar  
0
Эксперт .NET
 Аватар для Usaga
14745 / 9519 / 1364
Регистрация: 21.01.2016
Сообщений: 35,914
06.03.2018, 09:36
Infidel, ошибки не в базе, а вашем с ней обращении. Вы можете сгенерировать скрипты создания отдельных таблиц прямо из SQL Management Studio или просто в дизайнере посмотреть какие типы полей у таблиц, по которым вы JOIN выполняете. Да, блин, вы даже запросом в системном каталоге это посмотреть можете!

На данный момент я вам ничем помочь не могу. Чтобы получить помощь, вам придётся начать понимать чуть больше, чем ничего, как сейчас. Или методом тыка перебирать какие-то рандомные решения, пока оно само не заработает, или пока вы не приберётесь от старости.

Извините.
0
0 / 0 / 0
Регистрация: 02.03.2018
Сообщений: 50
06.03.2018, 09:37  [ТС]
Мне на этом же форуме кто-то сказал что нужно связать SupplierID и CustomerID. Не знаю, может это какой-то недалекий советовал. Я уже исправил на Orders.CustomerID = Customers.CustomerID
0
Эксперт .NET
 Аватар для Usaga
14745 / 9519 / 1364
Регистрация: 21.01.2016
Сообщений: 35,914
06.03.2018, 09:38
Цитата Сообщение от Infidel Посмотреть сообщение
Мне на этом же форуме кто-то сказал что нужно связать SupplierID и CustomerID. Не знаю, может это какой-то недалекий советовал.
То, что вам кто-то чего-то посоветовал не отменяет необходимости думать и понимать что вы делаете. На данный момент, вы даже на банальные вопросы о типах полей ответить не в состоянии. Тут вам уже никто не поможет.
0
0 / 0 / 0
Регистрация: 02.03.2018
Сообщений: 50
06.03.2018, 09:41  [ТС]
банальные вопросы о типах полей
Какие такие вопросы? Я знаю что у меня оба CustomerID имеют тип nchar, и что дальше? CAST не помогает перевести в число, выдает ту же ошибку.
0
Эксперт .NET
 Аватар для Usaga
14745 / 9519 / 1364
Регистрация: 21.01.2016
Сообщений: 35,914
06.03.2018, 09:44
Infidel, сообщение об ошибке говорит, что вы пытаетесь привести строку к числу. Даже содержимое строки показано: `ALFKI`. Я от вас пытался добиться ответа на вопрос какое поле какой таблицы приводится к числу (сравнивается с числовым полем другой таблицы). Всё. В течении трёх страницы вы это так сделать и не смогли. Такое ощущение, что вы вообще не понимаете, что от вас хотят.

Цитата Сообщение от Infidel Посмотреть сообщение
CAST не помогает перевести в число, выдает ту же ошибку.
Вот про эти рандомные решения я и говорил.
0
360 / 287 / 76
Регистрация: 21.06.2016
Сообщений: 1,115
06.03.2018, 09:47
Infidel, Итак, чтобы разобраться.
1. Джойнов может быть хоть 100 в одном запросе - от этого ошибки не будет, будет только проседание про производительности, но не ошибка (если памяти хватит обработать )
2. В джойнах в секции ON нужно использовать поля ОДНОГО типа, либо поля, которые неявно можно привести к одному типу (без кастования). Можно конечно же использовать кастование и прочую ерунду, приводя к другому типу - но тогда теряется возможность работать с индексами, что резко уменьшает ту же производительность - но Вам пока думается рано об этом думать, это уже будет следующим этапом.
Исходя из этого Вам нужно
1. Проверить типы полей, что используются в каждом джойне.
2. Привести их к единому типу - что числовому, что буквенному - не суть важно, главное к единому.
3. Профит.
Если не способны проверить тип поля - то киньте эту затею, БД тогда не ваше пока - учите основы, типы данных, таблицы, поля. Начните читать книжки не с конца, и всё подряд, и не смотрите 5-минутные ролики в ютюбах.

Добавлено через 1 минуту
Infidel, Вы даже читать форум не научились - я писал, что это ВЫ (неожиданно!!!) связали в своем джойне SupplierID и CustomerID.
Пересмотрите свой запрос!!!
0
06.03.2018, 09:49

Не по теме:

Цитата Сообщение от hoolygan Посмотреть сообщение
я писал, что это ВЫ (неожиданно!!!) связали в своем джойне SupplierID и CustomerID.
Вот вы во всём и виноваты. Человека сбили с пути истинного. :)

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.03.2018, 09:49

В интерфейсе содержится член,который имеет тип этого же интерфейса
Кто сможет объяснить, с какой целью в интерфейсе создаётся член, который имеет тип этого же интерфейса, как его потом использовать? ...

Преобразовать html-код, который имеет тип string, в HtmlElement
Надо преобразовать html-код, который имеет тип string, в HtmlElement. Через Convert вроде нельзя, (HtmlElement) тоже не помогло. Для...

ID имеет тип varchar
Как связывать таблицы с помощью JOIN, если Id одной из них (или обоих) имеет тип varchar/nchar?

Тип данных varchar
всем привет, отдельной ветки sqlite на форуме нет, поэтому спрошу тут: когда-то давно читал(сейчас уже не могу найти, где я это вычитал),...

Как конвертировать тип text в varchar?
Доброго времени суток. Как конвертировать тип tex в varchar?? Если єто возможно.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru