2015-07-14 3 views
0

Как я могу получить значения из базы данных mysql usin while loop?Запрос VB.NET и MySQL

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

Пройдемся:

Мы знаем, что EmailAddress это реальный адрес электронной почты, теперь первый запрос должен быть чем-то вроде этого

Query1 = "select ID from database.table_users where email='" & EmailAddress & "'" 

Теперь мы знаем, что Query1 будет возвращать значение идентификатора из table_users. Теперь нам нужно создать новый запрос, как этот

Query2 = "select friend_id from database.table_friends where user_id='" & query1 & "'" 

Хорошо, теперь Query2 возвращения friend_id из table_friends. Еще один запрос, как этот

Query3 = "select displayname from database.table_users where id='" & Query2 & "'" 

Query3 должен вернуть displaynames всех пользователей, которые мы получили в query2.

Пример:

Во-первых, мне нужно query ID from table_users where email=EmailAddres Тогда мне нужно query friend_id from table_friends where user_id=ID После этого я nedd query displayname from table_users where id=friend_id

* это только примеры, и они не являются правильными, как вы можете видеть: D

I нужно 3 запроса в цикле while, и только последний запрос (displayname) перейдет в список. Должен возвращать все значения mysql из table_friends, где ID = id пользователя EmailAddress.

+0

это только для этого примера, у меня есть разные имена, но поскольку мой английский плохой, я не могу объяснить :( – Gogo

+1

Кто-то может вытолкнуть один запрос с соединением – Drew

+2

1) Вам не нужно перебирать эти значения , вам нужно найти синтаксис 'JOIN'. 2) Ваши запросы открываются для SQL-инъекции, пожалуйста, просмотрите параметризованные запросы. – David

ответ

0

почему петли и почему вы не можете сделать это один запрос, как показано ниже, используя JOIN

select tf.displayname from table_users tu 
join table_friends tf on tu.id = tf.friend_id 
and tu.email = '" & EmailAddress & "'; 
+0

hm, loop beucase существует более одного значения, которое должно быть возвращено, все пользователи, которые являются друзьями с EmailAddress. – Gogo

+0

@Gogo, нет необходимости в петле; вы можете сделать соединение с другой таблицей и получить желаемый результат. Попробуйте опубликованный запрос в ответ и посмотрите на себя. – Rahul

+0

Я делаю это, у меня есть правильное количество строк, но для каждой строки displayname это мое имя-имя, как изменить это, чтобы получить друзей displayname? 'select tu.displayname от пользователей tu присоединяется к друзьям tf на tu.id = tf.friend и tu.email = '" & EmailAddress & "'; ' – Gogo

1

Регистрация таблиц в одном запросе. Что-то вроде этого:

SELECT 
    Friends.displayname 
FROM 
    table_users AS Users 
    INNER JOIN table_friends AS Connections 
     ON Users.user_id = Connections.user_id 
    INNER JOIN table_users AS Friends 
     ON Connections.friend_id = Friends.user_id 
WHERE 
    Users.email = @EmailAddress 

Это создает две ссылки на table_users таблицы, один для начального пользователя и один для друзей, соединенных вашей многие-ко-многим таблице связывания. (Обратите внимание также использование параметра запроса, который я настоятельно рекомендую вместо того, чтобы непосредственно вставив введенные в запрос.)

SQL является очень мощным для запроса структурированных данных (отсюда название), вы будете гораздо лучше не создавая логику запросов в SQL, а не просто заставляя SQL-запросы чересчур простыми и делая несколько поездок в базу данных.

+0

I ' Я попробую сейчас, спасибо за ответ. – Gogo