J'ai un problème avec groupe par strong>. Pour une raison quelconque, je ne peux pas l'utiliser. Donc, je cherche une solution alternative. J'utilise des webhosting en ligne et avec groupe par strong> je reçois cette erreur: bit intro: strong> Je fais un site web de restaurant et Dans la table forte> Invité forte> J'ai tous les Table: Strong> Achat P > +-----------------------------------+--------------------+
|purchaseid | guest_code | name | gid | guest_code |
+-----------------------------------+--------------------+
| 1 | CUST7408668| Mia | 1 | CUST7408668|
| 3 | CUST4425874| zoi | 5 | CUST4425874|
+------------------------+----------+--------------------+
5 Réponses :
Agrégation avant de rejoindre:
SELECT p.purchaseid, p.guest_code, g.name,
FROM (SELECT MIN(p.purchaseid) as purchaseid, p.guest_code
FROM purchase p
GROUP BY p.guest_code
) p JOIN
guest g
ON p.guest_code = g.guest_code;
# 1055 - Expression n ° 3 de Select List n'est pas dans le groupe par clause et contient une colonne non contenue 'denieeuwe_db.g.name "qui ne dépend de manière non fonctionnelle des colonnes du groupe par clause; Ceci est incompatible avec sql_mode = seulement_full_group_by
Merci beaucoup d'avoir posté votre réponse.
@navjotsingh. . . La requête extérieure ne doit pas avoir le groupe par code>. J'ai corrigé la réponse.
On dirait que vous voulez l'ID d'achat minimum. Vous pouvez utiliser min () code> pour cela. Vous devrez peut-être également étendre la clause Group par code> avec les autres colonnes. SELECT min(purchase.purchaseid) purchaseid,
purchase.guest_code,
guest.guest_code,
guest.name
FROM purchase
INNER JOIN guest
ON purchase.guest_code = guest.guest_code
GROUP BY purchase.guest_code,
guest.guest_code,
guest.name;
Supprimer la virgule de la dernière visite de la colonne de Fetch.nom, sinon c'est ma réponse! Merci beaucoup pour ça.
Vous pouvez utiliser le code invité distinct sur la table d'achat pour supprimer des données en double, car vous ne faites aucune agrégation
SELECT DISTINCT( purchase.guest_code ),
purchase.purchaseid,
guest.guest_code,
guest.NAME,
FROM purchase
INNER JOIN guest
ON purchase.guest_code = guest.guest_code
pouvez-vous si moi comment en donnant un exemple approprié?
Exemple ajouté pour la requête ci-dessus
J'apprécie votre contribution, mais ce n'est pas ce que je cherche.
Peut être un moyen le plus simple, en utilisant uniquement Guest_code dans le groupe, car sa relation correspondante.
SELECT MIN(purchase.purchaseid) AS purchaseid,
purchase.guest_code,
guest.Name,
guest.gid,
guest.guest_code
FROM purchase
INNER JOIN guest
ON purchase.guest_code=guest.guest_code
GROUP BY purchase.guest_code
ORDER BY 1;
Mise à jour de la question forte> p>
J'ai contacté l'équipe technique WebHost et c'est ce qu'ils disent sur cette question. P>
salut, p>
sur l'hébergement partagé, cela n'est pas autorisé car vous modifiez la base de données
Comportement de serveur pour tous les autres sites Web. P>
Mais vous pouvez modifier vos requêtes SQL pour obtenir un comportement similaire en utilisant
Any_Value () pour chaque colonne non gré. P>
par exemple. p>
Sélectionnez Nom, adresse, max (âge) du groupe T par nom; p>
échoue, car l'adresse n'est pas dans le groupe par. p>
Utilisation: p>
Sélectionnez Nom, Any_Value (Adresse), Max (Age) du groupe T par nom; P>
fonctionne de l'autre côté et produit un résultat similaire à la désactivation
Seul_full_group_by p>
Explication de MySQL: P>
Si seulement_full_group_by est désactivé, une extension MySQL à la norme
Utilisation SQL du groupe en permet la liste de sélection, la condition ou
Ordre par liste de se référer à des colonnes non gré même si les colonnes
ne dépendent pas fonctionnellement du groupe par colonnes. Cela provoque MySQL
accepter la requête précédente. Dans ce cas, le serveur est libre de
Choisissez une valeur de chaque groupe, alors à moins qu'ils ne soient identiques, le
Les valeurs choisies sont non numériques, ce qui n'est probablement pas ce que vous
vouloir. En outre, la sélection des valeurs de chaque groupe ne peut pas être
influencé par l'ajout d'une commande par clause. Le tri des résultats de résultats se produit
après que les valeurs ont été choisies et que l'ordre n'écoule pas.
Valeur dans chaque groupe Le serveur choisit. Désactivation
Seul_full_group_by est utile principalement lorsque vous le savez, en raison de
Propriété des données, toutes les valeurs de chaque colonne non contenue non
nommé dans le groupe en sont les mêmes pour chaque groupe. P>
Vous pouvez obtenir le même effet sans désactiver uniquement_full_group_by
En utilisant Any_Value () pour faire référence à la colonne non gré. P>
blockQuote>