2010-10-14 6 views
0

J'utilisais la fonction concat_ws de MySQL pour obtenir des données de la base de données MySQL et cela fonctionnait parfaitement. Je découvre cette requête à travers ce SO Question. Maintenant, j'ai le même cas, mais cette base de données de temps est SQL Server.Problème de requête SQL Server?

Demander à nouveau pour SQL Server:

J'ai une table comme ceci:

id | roll_no | name 
--------------------- 
1 | 111 | Naveed 
2 | 222 | Adil 
3 | 333 | Ali 

Si j'ai données comme ceci:

$fields = array("id" , "roll_no") et $values = array("1,111", "2,222");

Cela signifie Je dois écrire une requête sql pour obtenir des enregistrements de la table où (id! = 1 et roll_no! = 11 1) et (id! = 2 et roll_no! = 222). Cela signifie que le troisième enregistrement sera récupéré.

Je contiennent des données comme ceci:

$fields = array("id") et $values = array("2", "3");

Cela signifie que je dois écrire une requête SQL pour obtenir les enregistrements de la table où et (id = 3!) (Id = 2!). Cela signifie que le premier enregistrement sera récupéré. Comment écrire une seule requête générale pour obtenir des données de la table en utilisant ci-dessus deux tableaux de données?

Merci

Répondre

2

Votre question ne sait pas pour moi, mais le lien fourni à l'autre SO question, et en supposant que vous voulez juste adapter à SQL Server, je suppose que vous pouvez simplement remplacer

concat_ws (',', id, roll_no) 

par

id + ',' + roll_no 
+0

En fait, j'utilise cette requête dans mon code PHP dans lequel les ** champs ** et les ** valeurs ** sont transmis par des variables. Et les variables sont créées en utilisant des tableaux de données fournis dans ma question. Je veux savoir une meilleure méthode qui créera les champs et la chaîne de valeurs de telle sorte qu'elle s'intègre parfaitement dans la requête pour n'importe quel nombre de champs et de valeurs. Les mêmes problèmes ont été résolus dans ma question mysql liée en utilisant la fonction concat_ws mais la fonction concat_ws n'est pas disponible dans SQL Server. De toute façon +1 pour votre intérêt. – NAVEED

1

Il est un sql simple. Savez-vous 'où (pas) dans' clause?

Comme pour le premier si vous avez relation 1 à 1 entre id et rouler non, vous pouvez simplement écrire

select * 
from table 
where id not in ('1','2') and roll_no not in ('111','222') 

Pour le second, il est plus facile.

+1

Si vous postez du code ou du code XML, ** veuillez ** mettre en surbrillance ces lignes dans l'éditeur de texte et cliquer sur le bouton "code" (101 010) dans la barre d'outils de l'éditeur pour le mettre en valeur! –

+0

Oui c'est simple quand vous le coder en dur dans la requête. Mais je dois utiliser cette requête dans mon code PHP pour une quantité différente de champs et de valeurs. Donc je veux que cette requête soit générale dans mon code pour n'importe quelle combinaison de champs/valeurs. Le même problème a été résolu dans ma question liée fournie avec la fonction mysql concat_ws. – NAVEED

+0

vous pouvez écrire des chaînes dans la requête avec php, n'est-ce pas? Et c'est un SQL dont il avait besoin. concat_ws n'est pas SQL, mec! – Muktadir