Est-il possible de combiner des sous-requêtes et des jointures dans une seule instruction MYSQL ?
P粉647449444
P粉647449444 2024-04-04 13:00:10
0
1
459

Cette question me laisse perplexe. J'essaie d'utiliser Join et sous-requête dans MySQL mais je continue à recevoir des erreurs de syntaxe.

La déclaration en question est

SELECT Customer.customer_id, Customer.name, Order.address FROM Customer 
WHERE customer_id = (SELECT customer_id FROM Order WHERE customer_id = "625060836f7496e9fce3bbc6") 
INNER JOIN Order ON Customer.customer_id=Order.customer_id;

J'ai simplement essayé d'utiliser une requête sans sous-requête et cela a bien fonctionné.

SELECT Customer.customer_id, Customer.name, Order.address FROM Customer  
INNER JOIN Order ON Customer.customer_id=Order.customer_id;

Supprimer la jointure mais conserver la sous-requête fonctionne également.

SELECT Customer.customer_id, Customer.name, Order.address FROM Customer 
WHERE customer_id = (SELECT customer_id FROM Order WHERE customer_id = "625060836f7496e9fce3bbc6")

Le simple fait d'utiliser des sous-requêtes et des jointures entraînera des erreurs de syntaxe

Je n'arrive pas à trouver l'erreur.

Qu'est-ce que je fais de mal ici.

Merci d'avance

P粉647449444
P粉647449444

répondre à tous(1)
P粉894008490

Le secret est une grammaire correcte !

Lors de l'interrogation de plusieurs tables, il est préférable d'utiliser des alias pour les référencer, et les chaînes littérales doivent également être séparées par des guillemets simples dans les cas où plusieurs tables partagent le même nom de colonne.

Dans cet exemple spécifique, la sous-requête est redondante, utilisez simplement la chaîne littérale directement dans la clause Where.

SELECT c.customer_id, c.name, o.address 
FROM Customer c
JOIN Order o ON c.customer_id = o.customer_id
WHERE c.customer_id = (
  SELECT customer_id 
  FROM Order 
  WHERE customer_id = '625060836f7496e9fce3bbc6'
);
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal