Dans mon tableau, il y a 10 colonnes utilisées pour stocker des "items" (serveur de jeu). Quand un utilisateur choisit l'article, il doit parcourir les colonnes 0-9 (avec les noms "I0" .. "I9") et retourner une fois que la colonne dans la ligne courante est vide. Je ne peux pas comprendre comment le faire du côté du serveur SQL. Je ne peux penser à IF EXISTS pour chaque colonne, mais ce n'est pas vraiment bon .. Content de toute aide! MerciT-SQL: trouver une colonne vide
0
A
Répondre
5
Peut-être qu'il est préférable d'avoir la table items (user_id, item_id)
et de limiter le nombre à 10 pour chaque utilisateur?
Il me semble être un bon moyen de normaliser votre table et de résoudre votre problème. De plus, la structure de votre table devient plus flexible - vous pouvez augmenter ou diminuer dynamiquement la limite.
0
Il me semble que vous essayez de trouver une colonne vide pour un utilisateur spécifié (ligne). Et, une colonne vide contient NULL. En supposant que c'est correct et en ignorant les soucis concernant la conception correcte, voici quelque chose qui retournera le numéro de la première colonne qui contient une valeur NULL.
SELECT CASE
WHEN I0 IS NULL THEN 0
WHEN I1 IS NULL THEN 1
WHEN I2 IS NULL THEN 2
WHEN I3 IS NULL THEN 3
WHEN I4 IS NULL THEN 4
WHEN I5 IS NULL THEN 5
WHEN I6 IS NULL THEN 6
WHEN I7 IS NULL THEN 7
WHEN I8 IS NULL THEN 8
WHEN I9 IS NULL THEN 9
END AS NextColumn
FROM MyTable
WHERE UserID = 'Me'
;
0
SELECT COALESCE(I0, I1, I2, I3, I4, I5, I6, I7, I8, I9) AS FirstNotNull
FROM MyTable
Questions connexes
- 1. TSQL Trouver doublons
- 2. TSQL limitations de colonne calculée
- 3. Vérifiez si une valeur de colonne est contenue dans une autre valeur de colonne (TSQL)?
- 4. TSQL trouver des cours incomplets
- 5. TSQL - Utiliser une Select colonne dérivée dans la clause Where
- 6. rangée tsql à la colonne (pivot)
- 7. TSQL: trouver des entrées uniques dans une seule table
- 8. par défaut une colonne avec une chaîne vide
- 9. Comment cacher la vide colonne
- 10. TSQL - Somme une requête union
- 11. DataTable C# Type de colonne vide
- 12. DynamicJasper (sur Grails) Conserver volontairement une colonne ou un champ vide (vide)
- 13. Vérification de la colonne xml vide
- 14. Comment hors la colonne IDENTITY de la table dans TSQL
- 15. Nom colonne de résultat XML de TSQL "pour xml explicite"?
- 16. Comment mettre à jour une colonne avec une valeur incrémentale en utilisant tsql?
- 17. TSQL Une mise à jour récursive?
- 18. Fonction dans une fonction TSQL
- 19. encore une autre question tsql
- 20. TSQL Insert Conundrum
- 21. TSQL - faire une valeur float littérale
- 22. TSQL Comment mettre à jour une colonne à partir d'une ligne dans la même table?
- 23. TSQL Retour Guide qui se produit le plus dans une colonne
- 24. Priorité/poids à une colonne en utilisant FREETEXTTABLE dans dymnamic TSQL
- 25. Excel: Trouver la valeur minimale dans une colonne
- 26. Matrice Transposer TSQL
- 27. TSQL/VB.NET - flux écrire à une table
- 28. SQL comment trouver la colonne non nulle?
- 29. Comment supprimer une colonne vide dans une table HTML en utilisant XSLT?
- 30. Définir une valeur par défaut vide pour une colonne de caractères dans MySQL?
Cela ressemble beaucoup à un défaut de conception de base de données. Au lieu de colonnes X, vous devez utiliser X lignes pour stocker les éléments. – Tomalak
Pourquoi la vérification EXISTS pour chaque colonne n'est-elle pas bonne? C'est essentiellement ce que vous voulez faire, et probablement le chemin le plus court pour que SQL Server trouve les enregistrements. Tout autre type d'itération basée sur le curseur ou SQL dynamique est probablement un événement moins bon. –
L'énoncé du problème n'est pas clair. Quel est le comportement attendu une fois qu'une colonne vide est trouvée? Que contiennent les lignes? –