Je ne suis pas sûr de savoir comment demander à la question, donc je vais donner un exemple, pour voir si cela est possible avec SQL.
Disons qu'un client visite un magasin et un système crée un visiteux. Ensuite, il place une commande dans une table des commandes, liée à la visite. Ensuite, il remplit un formulaire d'expédition, dans une table d'expédition, liée à l'ID de visite. Ensuite, le système génère un reçu, dans une table de réception, liée au VisitID. Ensuite, il remplit une forme de retour, dans une table de retour de retour, liée au Visitid. P>
Ainsi, est-il un moyen d'interroger le système à montrer pour un visionneur il existe / n'est pas un record de commande , Enregistrement de formulaire d'expédition, enregistrement de reçu, enregistrement de retour? Cela serait pratique dans un DBGrid pour montrer toutes les activités du client sur ce VisitID. Chaque table (commandes, prestation d'expédition, devenue de réception, retour de force, etc.) est d'une structure différente et de différents champs, mais reliée par l'ID de visite et peut être présente ou non présentée, ou peut avoir plusieurs commandes pendant ce siteid. p>
SO - Sélectionnez les commandes, la prescription, la forme de réception, la signalisation de retour où visitez le fichier = x.
Donc, je pourrais présenter les informations dans une grille telle que: p>
3 Réponses :
visites qui n'ont pas de disques dans toutes les tables:
Merci, ojtamojtam; Existe-t-il un moyen d'énumérer les résultats à l'aide de groupements afin que chaque résultat soit une nouvelle ligne comme dans l'exemple?
Peut-être que vous recherchez ou vous pouvez vouloir une agrégation de chaîne. Ceci est dépend du SGMS et vous n'avez pas mentionné votre SGBD. Ceci est pour MySQL: P> Union tout code>: select
visitid,
ord.ids as orderids,
rcp.ids as receiptids,
shp.ids as shippingids,
ret.ids as returnids
from visits v
left join
(select visitid, group_concat(orderid) as ids from orders group by visitid) ord
using (visitid)
left join
(select visitid, group_concat(receiptid) as ids from receipts group by visitid) rcp
using (visitid)
left join
(select visitid, group_concat(shippingid) as ids from shippings group by visitid) shp
using (visitid)
left join
(select visitid, group_concat(returnid) as ids from returns group by visitid) ret
using (visitid)
order by visitid;
"Ceci est pour mysql:" i> group_concat SQLite est également pris en charge par Google BigQuery et SQLite que je connais .. mais j'ai des doutes sur l'utilisation de Sélectionnez VisitID, group_concat ( groupe par VisitID code> en tant que colonne agrégée et une colonne non agrégée ne peut pas être mélangée
Merci @raymond Nijland. Vous avez raison bien sûr, j'ai oublié le groupe par code> clauses lors de la saisie des sous-sollicitations.
Merci à tous, vous m'avez permis de répondre à la question. À mes fins, j'ai combiné les résultats pour rendre ce SOL
FormID FormType FormTitle 23 1 Order ID 26 1 Order ID 28 1 Order ID 342 2 Shipping ID 343 2 Shipping ID 367 2 Shipping ID
Je suis content que vous ayez trouvé une réponse à votre problème. Vous ne devriez pas utiliser les jointures séparées par des virgules cependant. Il y avait été redondant dans SQL 1992 standard. C'est considéré comme un mauvais style de les utiliser encore. Et vous voudrez peut-être ajouter une clause par code>, afin de vous assurer d'obtenir des commandes d'abord et d'expédition de seconde. Union TOUT code> seul ne garantit pas une commande. Vous avez besoin d'une commande par code> pour garantir un résultat ordonné.
Quel SGBD utilisez-vous? Vous devriez toujours marquer des questions SQL avec le SGBD que vous leur demandez.
J'utilise mysql, merci.