Je suis moi-même attaché à des nœuds sur celui-ci, alors j'espère que quelqu'un peut aider.
Je dois créer une table d'affichage et rejoindre 2 tables ensemble, mais il suffit d'afficher des entrées avec des données manquantes. P>
Donc, j'ai une table qui répertorie les drones que je possède, y compris le fabricant, le numéro de série et la date achetée, et j'ai une autre table qui répertorie les données de maintenance, y compris le type de maintenance reçu chaque appareil reçu. Ce tableau inclut également des données similaires à la première table. P>
Je dois tirer les données du périphérique de la première table et comparer celle-ci à la table de maintenance et afficher les drones qui n'ont pas reçu de type de maintenance particulier. P>
C'est ce que j'ai essayé p> mais cela donne une table vide, toutes les suggestions sur l'endroit où je vais mal? P> < / p>
3 Réponses :
Je pense que vous voulez que vous souhaitez un jointure gauche de gauche code>: notes: p> à chek for Nullity, vous avez besoin du Si vous souhaitez afficher le type de maintenance, vous devez prendre ces informations à partir de la table Vous pouvez également en formuler une phrase avec un
NULL code> construction (votre code vérifie la chaîne litterne
'null' code>): p> li >
Drone code> plutôt que dans la table Code> Maintenance P> P> < / li>
ul>
n'existe pas code> condition et une sous-requête corrélée: p>
Merci pour la réponse :) La table Drone ne contient aucune information de maintenance qui réside uniquement dans la table de maintenance elle-même. Tous les drones sauf 1 ont été mis en service, ce que j'essaie de faire est de tirer ceux qui n'ont rien eu du tout, ergo, restent intégrés
@Khelmon: La requête produise-t-elle le résultat que vous attendez?
Il produit une table peuplée, mais dans la colonne de maintenance, je vois les types de drones répétés
Juste FYI: Je ne sais pas si MySQL se comporte de même que SQL Server, mais dans les versions modernes, le où il n'existe pas code> est généralement plus rapide.
@Khelmon Depuis que vous filtrez essentiellement des résultats correspondants à partir de la table Code> Maintenance Code>, il suffit de remplacer d.type comme maintenance code> avec
'' comme maintenance code>. Vous avez juste besoin de la chaîne vide. Ou juste laisser cette colonne tout ensemble. Vous n'en avez pas vraiment besoin pour les données que vous avez demandées.
@Shawn Qu'est-ce que j'ai fait 6 drones achetés, 5 d'entre eux ont été commandés au cours d'un cycle de maintenance. La table de maintenance contient les données de tous les cycles de maintenance et les tables de drones contiennent tous les drones achetés. Ce que je tente de faire est de créer une table d'affichage qui affiche uniquement les drones qui n'ont pas encore été commandés. Pour moi, c'est un exercice d'utilisation d'une jointure, mais cela a frappé mon cul pour les 2 derniers jours :)
est NULL a raison et rejoindre droit parce que NULL dans la maintenance de la table droite
Essayez-le:
Sélectionner un drone distinct.Manufacturer en tant que fabrication, drone.séral, drone.type,
drone.parchase_date, maintenance.type comme maintenance
De Drone Drone Drone Rejoindre Maintenance sur drone.type = maintenance.type
Où la maintenance.type est null; code> p>
Dans mon expérience, une jointure droite code> est généralement un
rejoindre code> qui aurait dû être.
Merci pour votre réponse, cela m'a également donné une table vide: /
Basé sur votre dernier commentaire:
Prenez-le pas à pas et construisez ce que vous voulez faire (nous allons combiner ces ensembles plus tard) .... p>
Vous cherchez à consulter tous vos drones. Alors sélectionnons des colonnes à partir de drones code> pour voir ce qui est là. p>
manufacturer | serial | type | purchase_date
:--------------------- | -----: | ---: | :------------------
Aerial Robotic Systems | 2 | 10 | 2020-02-01 00:00:00
Titan Aerospace | 6 | 200 | 2020-06-01 00:00:00
À noter, la raison pour laquelle vous n'obtenez aucun résultat est que vous utilisez un joint interne
tente d'essayer de correspondre à un
drone.type code> à
null code> ( Ce que je pense que vous avez conçu un
null code> "valeur" et non la chaîne
"null" code>). Un
null code> n'a aucune valeur et ne peut être égal à rien, même un autre
null code>.
Si
"Cette table inclut également des données similaires à la première table." CODE> signifie que vous avez des données dupliquées de la table code> Drone code>, vous voudrez peut-être reculer et regarder votre table. Concevoir à nouveau.
@Shawn Ce n'est pas ma conception de table, c'est ce que j'ai reçu pour travailler avec le cadre d'un exercice :)
Comment ces tables se rapportent-elles les unes aux autres? Je vois qu'il se lie sur
type code>, mais qu'est-ce que
type code> se réfère? Est-ce une clé primaire dans
drones code> ou
entretien code>? Avez-vous un exemple de données que vous regardez?
@Shawn donc table 1 est drone, consiste en un fabricant (clé PRI), série (clé PRI) et type: drone_types Tableau 2 est la maintenance, consiste en un fabricant (clé PRI), série (Touche PRI), type: Maintenance_type si je demande '' 'Sélectionnez * à partir de la maintenance' '' Je reçois un résultat de 5 drones qui ont eu entretien de types variables. Si j'existais '' '' 'Select * de drone' '', je reçois le résultat de 6 drones. J'ai donc besoin d'écrire une requête qui me donne le 1 drone qui n'a pas eu de maintenance.
Donc, il n'y a qu'un seul enregistrement code> entretien code> pour chaque drone? Qu'est-ce que
série code> dans les deux tables? Ils ne peuvent pas être un lien sur
type code> car ces valeurs signifient différentes choses dans les deux tables. dbfiddle.uk fonctionne très bien pour cela. Ou sqlfiddle.com .
Les recherches contre les vues dans MySQL ont un accès limité aux indices sous-jacents, ce qui, à mon avis, pratiquement inutile. Pour une aide supplémentaire, voir meta.stactverflow.com/questions/333952/...