Выбор SQL заменяет целое число строкой

Я думаю, что лучший способ это

var obj = VisualTreeHelper.GetParent((DependencyObject)Content);
18
задан ROMANIA_engineer 29 July 2015 в 21:15
поделиться

5 ответов

База данных должна содержать значения, и вы должны выполнить соединение с другой таблицей, в которой есть эти данные.

Итак, у вас должна быть таблица со списком людей

ID Имя FavSport
1 Алекс 4
2 Gnats 2

И еще одна таблица со списком видов спорта

ID Sport
1 баскетбол
2 Футбол
3 Футбол
4 Kickball

Затем вы должны объединить эти таблицы

select people.name, sports.sport 
from people, sports 
where people.favsport = sports.ID

, что вернет вам

Name Sport
Алекс Кикболл
Gnat Football

Вы также можете использовать оператор case, например. просто используя приведенную выше таблицу людей, вы можете написать что-то вроде

select name, 
       case 
         when favsport = 1 then 'Basketball' 
         when favsport = 2 then 'Football' 
         when favsport = 3 then 'Soccer' 
         else 'Kickball' 
       end as "Sport" 
from people

Но это, конечно, не лучшая практика.

23
ответ дан 30 November 2019 в 07:08
поделиться

MySQL имеет оператор CASE . В SQL Server работает следующее:

SELECT
    CASE MyColumnName
        WHEN 1 THEN 'First'
        WHEN 2 THEN 'Second'
        WHEN 3 THEN 'Third'
        ELSE 'Other'
    END
10
ответ дан 30 November 2019 в 07:08
поделиться

Как вы думаете, было бы полезно хранить эти отношения между целыми числами и строками в самой базе данных? Пока вам нужно хранить эти отношения, имеет смысл хранить их рядом с вашими данными (в базе данных), а не в вашем коде, где они могут потеряться. Если вы используете это решение, это сделает целое число внешним ключом для значений в другой таблице. Вы сохраняете целые числа в другой таблице, например sports , с sport_id и sport , и присоединяете их как часть вашего запроса.

Вместо SELECT * FROM my_table вы должны SELECT * from my_table и использовать соответствующее соединение . Если не каждая строка в вашем основном столбце имеет соответствующий вид спорта, вы можете использовать левое соединение,

1
ответ дан 30 November 2019 в 07:08
поделиться

определенно должен содержать в БД строковые значения. Я ни в коем случае не эксперт по БД, но я бы порекомендовал вам создать таблицу, в которой хранятся строки и соответствующие им целочисленные значения. Оттуда вы можете определить связь между двумя таблицами, а затем выполнить JOIN в select, чтобы получить строковую версию целого числа.

tblSport Columns
------------
SportID int (PK, eg. 12)
SportName varchar (eg. "Tennis")


tblFriend Columns
------------
FriendID int (PK)
FriendName (eg. "Joe")
LikesSportID (eg. 12)


In this example, you can get the following result from the query below:
SELECT FriendName, SportName
FROM tblFriend
INNER JOIN tblSport
ON tblFriend.LikesSportID = tblSport.SportID

Чувак, уже поздно - надеюсь, я понял. кстати, вы должны прочитать о различных типах объединений - это самый простой пример одного из них.

1
ответ дан 30 November 2019 в 07:08
поделиться

Выражение CASE может помочь. Однако может быть даже быстрее иметь небольшую таблицу с первичным ключом int и строкой name , такой как

1  baseball
2  football

и т. Д., И JOIN соответствующим образом в запросе.

]
2
ответ дан 30 November 2019 в 07:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: