SQL: créer un nouveau champ, le remplir avec les résultats de la requête
J'ai deux tables: tbl_listings, avec la colonne: prop_id;
et une autre table: tbl_bookings, avec les colonnes: prop_id, booking_date.
Je veux écrire une requête qui compte le nombre de toutes les fois prop_id apparaît dans tbl_bookings, et puis le remplit d'une nouvelle colonne dans tbl_listings avec les résultats de cette requête.
ma requête ressemble:
ALTER TABLE tbl_listings
ADD COLUMN prop_count INT
UPDATE tbl_listings
SET prop_count =
(SELECT COUNT(*)
FROM tbl_bookings
GROUP BY prop_id)
mais pour une raison que j'obtiens un message d'erreur disant: sous-Requête retourne plus de 1 ligne.
Comment puis-je résoudre ce problème?
Je pense que si vous ajoutez une colonne à une table, puis immédiatement essayer de mettre à jour la requête ne s'exécute pas. Vous avez besoin d'utiliser ALLER après l'ajout de la colonne
OriginalL'auteur natsuki_2002 | 2013-08-09
Vous devez vous connecter pour publier un commentaire.
Que la sous-requête vous donne un compte pour chaque
prop_id
. Vous ne pouvez attribuer une valeur du nombre deprop_count
. Si vous avez l'intention de mettre à jour leprop_count
dans plusieurs lignes qui correspondent à prop_ids, vous aurez besoin d'ajouter une sous-requête corrélée à la mise à jour qui met en corrélation laprop_id
danstbl_bookings
avec le correspondantprop_id
danstbl_listings
.Que je pense à propos de votre question, je me demandais si vous vouliez dire, à insérer dans un vide tbl_listings table plutôt que de les mettre à jour. Vous pouvez le faire avec cette commande:
Si vous avez vraiment le but de la mise à jour et en supposant que chaque
prop_id
est présent dans votretbl_listings
table, vous pouvez lancer la mise à jour suivante:Si vous souhaitez mettre à jour
tbl_listings
par l'insertion de nouveaux prop_ids detbl_bookings
et de leur compte, vous pouvez le faire:Juste mis à jour ma réponse avec quelques échantillons en fonction de votre cas, afin de savoir plus précisément vous aider...
De grands exemples, la marche à travers les différentes situations possibles. Très utile, merci !
OriginalL'auteur Michael Goldshteyn