2011-09-17 6 views
1

im en utilisant MySQL et VB6 pour exécuter cette requête ..me aider avec cette déclaration sql

sql = "select user_id, fname, middle, lname from users where NOT EXISTS (SELECT user_id FROM accounts where accounts.user_id = users.user_id) " 

ce que je suis en train de faire est d'obtenir la liste des enregistrements des utilisateurs de table où le user_id n'existe pas sur les comptes de la table. J'ai réussi sur ce, cependant, ayant un problème avec mon code vb ..

je veux que sur l'événement de changement de ma zone de texte, si l'utilisateur de type 1, tous les enregistrements commençant par 1 seront affichés .. J'ai essayé de faire cela mais sans avail..i obtenu erreur de syntaxe ..by le chemin, la nuser_id est la valeur de zone de texte ..

sql = "select user_id, fname, middle, lname from users where NOT EXISTS (SELECT user_id FROM accounts where accounts.user_id = users.user_id) and user_id like'" & nuser_id & "%'""" 

une idée? merci ..

+0

Votre deuxième extrait est vulnérable à l'injection SQL. N'utilisez pas la concaténation de chaîne pour la remplacer dans les données de requête comme cela. –

Répondre

0

Essayez ceci:

sql = "select user_id, fname, middle, lname from users where NOT EXISTS (SELECT user_id FROM accounts where accounts.user_id = users.user_id and accounts.user_id like'" & nuser_id & "%')" 
0

Non testé, mais pourrait fonctionner:

sql = "SELECT users.user_id, fname, middle, lname FROM users WHERE users.user_id NOT IN (SELECT accounts.user_id FROM accounts WHERE accounts.user_id = " & nuser_id & ") AND users.user_id = " & nuser_id & " LIMIT 1" 

Je suggère fortement que vous lancez la nuser_id variable entier (ou si sql échapper vos ids ne sont pas des nombres). Btw: Votre code d'origine fuyait un espace après le LIKE.

Questions connexes