Je pratique des requêtes SQL en utilisant une base de données de réservation d'hôtel dans MySQL. Il y a 4 tables qui sont invitées, chambre, hôtel et réservation dans la base de données. Je veux écrire une requête SQL pour récupérer les détails des chambres d'hôtel qui ont le prix le plus bas. Il y a plus d'un enregistrement avec le prix minimum et la tâche est de les récupérer tous et non seulement d'un enregistrement.
SELECT * FROM room ORDER BY Price LIMIT 1;
6 Réponses :
Si vous souhaitez que tous les enregistrements portent le prix minimum sur l'ensemble de la table, une solution de base de données croisée consiste à filtrer avec une sous-requête corrélée: selon votre base de données, de meilleures solutions pourraient être disponible. Typiquement, SQL Server a Top 1 avec les cravates CODE>: P> select *
from (select r.*, rank() over(order by price) rn from room r) t
where rn = 1
SELECT t.* FROM Room t LEFT JOIN Room t1 ON t1.Price < t.Price WHERE t1.Id IS NULL This assumes your table has an Id column - if it doesn't you can just use WHERE t1.Price IS NULL on the last line.It returns all records for which no lower price exists.
SELECT TOP 1 hotel.hotelnos, hotel.roomnos, hotel.roomtype, hotel.price FROM hotel ORDER BY hotel.price; this might vary depending on the type of SQL, e.g Mysql,MSSQL,etc
La requête que j'ai écrite fonctionne et récupérera autant de dossiers qui ont le prix minimum
Oui j'ai écrit le top 1, et il récupérera autant de documents avec le prix minimum
Pouvez-vous s'il vous plaît aidez-moi à comprendre? Voyez-vous ma petite démonstration sur le lien que j'ai envoyé dans mon commentaire précédent?
J'ai utilisé la déclaration SQL ci-dessous Sélectionnez le Top 1 Hôtel.Hotelnos, Hôtel.Crosparnos, Hôtel.rombèreType, Hôtel.Plus de l'ordre de l'hôtel. et il a récupéré toutes les lignes avec le prix minimum
Essayez la même instruction SQL dans VBA, MS Access et il retournera plusieurs rangées. Modifier la définition de la table pour avoir un pkket qui est une clé générée automatiquement
VBA fonctionne sur MSDE qui est la version légère de MSSQL, tandis que MS SQL Documentation indique qu'il ne récupérera qu'une ligne, dans VBA, il récupère toutes les lignes avec la valeur minimale
Lisez à propos de MSDE sur cette URL, la plupart des développeurs ne sont pas informés à ce sujet, ses exécutions sur SQL Server EN.Wikipedia. org / wiki / msde
Si vous voulez les chambres avec le prix minimum pour chaque si tu veux Juste les chambres avec le prix minimum: p> hotel_no code>, utilisez n'existe pas code> comme ceci:
Alternativement vous pouvez essayer Sélectionnez * De la pièce Où Prix = (sélectionnez min (prix) dans la chambre) p>
La réponse précédente J'ai donné des travaux dans MSSQL, ci-dessous fonctionnera dans MySQL P>
Sélectionnez * à partir de Chambre Code> Où Prix = (Sélectionnez Min (prix) dans la salle) P>
A) Ne criez pas avec toutes les capsules. B) N'utilisez pas d'écran pour les données textuelles.
Utilisez du texte pour le texte. Donnez à la table en tant que texte dans des colonnes dans un format de bloc de code. Voir l'aide d'édition. Dans les questions de code donnez un exemple de reproductible minimal . Donc, cette table doit être un code d'initialisation du texte dans des colonnes dans un format de bloc de code. Comment demander centre d'aide a >