recherche

Maison  >  Questions et réponses  >  le corps du texte

Est-il possible de combiner des sous-requêtes et des jointures dans une seule instruction MYSQL ?

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粉647449444P粉647449444228 Il y a quelques jours424

répondre à tous(1)je répondrai

  • P粉894008490

    P粉8940084902024-04-05 00:17:29

    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'
    );

    répondre
    0
  • Annulerrépondre