cosmoschtroumpf dawa powered | Hello
J'ai un problème un peu compliqué à expliquer
J'ai 3 tables : entreprise, agence, contact.
Je veux faire un emailing à un certain groupe de personnes dans ces tables.
Les tables sont comme ça (en gros) :
Citation :
entreprise :
- id
- raisonsociale
- mail
- autres infos
agence :
- id
- id_entreprise
- adresse et autres infos
contact :
- id
- id_agence
- nom
- prénom
- mail
- autres infos
|
Je veux :
- les adresses mail et infos (nom, prénom et autres) des contacts
- la raison sociale (et d'autres infos) de l'entreprise à laquelle ils sont rattachés
et le point important qui pose problème :
- pour les entreprises qui n'ont pas de contact avec un email (ou pour toutes, je m'en fous) : récupérer l'email général de l'entreprise et "l'assigner" au premier contact qui tombe sous la main.
Exemple :
Citation :
Entreprise Albert & fils (email contact@alberts.com), avec les contacts Albert (albert@alberts.com), Alphonse (pas de mail), et Arnaud (arnaud@alberts.com).
Entreprise Barnabé vous veut du bien (email info@barnabe.com), avec les contacts Barnabé, Bertrand et Brutus, qui n'ont pas de mail.
Il faudrait que ça me ressorte :
id contact | id entreprise | nom | raison sociale | email
1 | 1 | albert | Albert & fils | albert@alberts.com
3 | 1 | arnaud | Albert & fils | arnaud@alberts.com
4 | 2 | barnabé | barnabé vous veut du bien | info@barnabe.com
pas plus, pas moins
|
Mon patron, toujours adepte de, hum, "solutions" "élégantes" et "qui marchent" (j'insiste sur les guillemets à chaque fois), m'a pondu ça :
Code :
SELECT contacts.mail AS contact_mail, contacts.typemail, contacts.raisonsociale AS entr_raisonsociale, contacts.entr_id, contacts.civilite AS civilite_label, contacts.nom AS contact_nom, contacts.prenom AS contact_prenom, contacts.contact_id FROM (SELECT DISTINCT ctentr.entr_mail AS mail, 'entr' AS typemail, ctentr.entr_raisonsociale AS raisonsociale, ctentr.entr_id, '' AS civilite, '' AS nom, '' AS prenom, 0 AS contact_id FROM e_activite INNER JOIN e_famille ON e_activite.famille_id = e_famille.famille_id INNER JOIN e_entreprise_activite ON e_activite.activite_id = e_entreprise_activite.activite_id INNER JOIN VContacts AS ctentr ON e_entreprise_activite.entr_id = ctentr.entr_id WHERE (ctentr.entr_valide = 1) AND (ctentr.contact_valide = 1) AND (NOT (ctentr.entr_mail IS NULL)) AND (NOT (ctentr.entr_mail LIKE '')) UNION SELECT DISTINCT ctcont.contact_mail AS mail, 'contact' AS typemail, ctcont.entr_raisonsociale AS raisonsociale, ctcont.entr_id, ctcont.civilite_label AS civilite, ctcont.contact_nom AS nom, ctcont.contact_prenom AS prenom, ctcont.contact_id FROM e_activite AS actcont INNER JOIN e_famille AS famillecont ON actcont.famille_id = famillecont.famille_id INNER JOIN e_entreprise_activite AS entractcont ON actcont.activite_id = entractcont.activite_id INNER JOIN VContacts AS ctcont ON entractcont.entr_id = ctcont.entr_id WHERE (ctcont.entr_valide = 1) AND (ctcont.contact_valide = 1) AND (NOT (ctcont.contact_mail IS NULL)) AND (NOT (ctcont.contact_mail LIKE '')) ) AS contacts
|
Donc pas du tout ce qu'ils nous faudrait, puisque ça nous sort :
- tous les contacts qui ont un mail
- plus toutes les entreprises qui ont un mail, avec des infos bidons pour le contact
et en plus c'est moche
est-ce que vous avez une idée ? ---------------
Android/Manettes/Metroidvania/Zelda/Indés/Retrogaming/VDS jeux
|