Jump to content

Requête SQL : mon SELECT n'accepte que les *


Recommended Posts

Bonjour,

 

Petit souci que je n'arrive pas à résoudre :

J'ai créé la requête SQL suivante dans le gestionnaire SQL :

 

SELECT *
FROM pre7365_customer c
   JOIN  pre7365_address a
      ON c.id_customer = a.id_customer
   JOIN  pre7365_country co
      ON co.id_country = a.id_country
   JOIN pre7365_customer_group cg
      ON c.id_customer = cg.id_customer
           WHERE cg.id_group=4
 

Cette requête marche bien.

Mais je voudrais restreindre ses résultats et ne pas imprimer toutes les colonnes.

Or quand je restreint, sur le modèle suivant :

 

SELECT

c.firstname

c.lastname

a.address1

a.address2
FROM pre7365_customer c
   JOIN  pre7365_address a
      ON c.id_customer = a.id_customer
   JOIN  pre7365_country co
      ON co.id_country = a.id_country
   JOIN pre7365_customer_group cg
      ON c.id_customer = cg.id_customer
           WHERE cg.id_group=4

 

Ca plante, ou plutôt, ça me sort une table vide (j'ai aussi essayé avec des virgules). J'aimerais bien comprendre pourquoi.

 

Patrick

www.cramcram.fr

 

Link to comment
Share on other sites

SELECT

c.firstname,

c.lastname,

a.address1,

a.address2
FROM pre7365_customer c
left JOIN  pre7365_address a
      ON c.id_customer = a.id_customer
left JOIN  pre7365_country co
      ON co.id_country = a.id_country
JOIN pre7365_customer_group cg
      ON c.id_customer = cg.id_customer
           and cg.id_group=4

 

ça devrait être mieux, si tu t'es pas trompé avec les champs

pre7365_country elle te sert à quoi ?

Link to comment
Share on other sites

  • 1 month later...

Ah ! Un grand merci, RV.

Ca marche.

J'ai rajouté l'ensemble de l'adresse  (d'où la présence de la table country).

Pour être parfait il faudrait qu'on puisse faire un tri sur le type d'adresse (livraison ou facturation) mais j'ai l'impression que ce n'est guère possible, elles ne sont pas identifiées dans Prestashop (ou alors, dans les commandes, mais là ça devient compliqué). Du coup j'ai sorti aussi l'alias, c'est déjà une indication.

Link to comment
Share on other sites

SELECT
  1 as ordre,   /* LIVRAISON */
  c.firstname,
  c.lastname,
  a.address1,
  a.address2
FROM pre7365_customer c
JOIN pre7365_customer_group cg ON c.id_customer = cg.id_customer
                               and cg.id_group=4
JOIN  pre7365_address   a ON a.id_customer = cg.id_customer
JOIN pre7365_orders    od ON od.id_customer = a.id_customer
                                and od.id_address_delivery = a.id_address
UNION
SELECT
  2 as ordre,    /* FACTURATION */
  c.firstname,
  c.lastname,
  a.address1,
  a.address2
FROM pre7365_customer c
JOIN pre7365_customer_group cg ON c.id_customer = cg.id_customer
                               and cg.id_group=4
JOIN  pre7365_address   a ON a.id_customer = cg.id_customer
JOIN pre7365_orders    od ON od.id_customer = a.id_customer
                                and od.id_address_invoice = a.id_address
ORDER BY 2,3,1

le tri est : firstname, lastname, adresse de livraison puis les adresses de facturation

Edited by rvcat (see edit history)
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...