J'utilise cette requêtemysql colonne inconnue
SELECT COUNT(DISTINCT to_number) AS errors FROM sent_txts
WHERE msg_link_id = 0 AND
msg_sent_datetime BETWEEN '2010-08-09 07:00:00' AND '2010-09-07 11:59:59'
HAVING to_number IN(SELECT mobile FROM action_6_members WHERE mobile = to_number)
Cependant, je reçois
Unknown column 'tada_prod.sent_txts.to_number' dans 'où la clause'
Si je commenter le fait que la requête fonctionne bien.
Voici la table sent_txts
CREATE TABLE `sent_txts` (
`id` int(64) NOT NULL AUTO_INCREMENT,
`msg_link_id` int(64) DEFAULT NULL,
`msg_class` varchar(256) DEFAULT NULL,
`msg_ref` varchar(256) DEFAULT NULL,
`to_number` varchar(256) DEFAULT NULL,
`msg_body` text,
`waiting_for_reply` int(64) DEFAULT NULL,
`status` varchar(256) DEFAULT NULL,
`tada_error` int(64) DEFAULT NULL,
`msg_sent_datetime` datetime DEFAULT NULL,
`reply_type` int(11) DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=256379 DEFAULT CHARSET=utf8
Alors, évidemment, la colonne est là.
Quel est le problème?
Voici expliquer de la requête publié par Jonathan
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE a ALL 10895 1 SIMPLE s ALL 256050 Using where; Using join buffer
Voici le spectacle crée pour action_6_members
:
CREATE TABLE `action_6_members` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`draw_id` int(11) NOT NULL,
`mobile` varchar(255) NOT NULL,
`fly_buys` varchar(255) NOT NULL,
`signup_date` datetime NOT NULL,
`club` int(11) NOT NULL DEFAULT '0' COMMENT '1 = yes, 2 = no',
`code` varchar(7) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=10896 DEFAULT CHARSET=latin1
+1: Vous me battre; Je travaillais sur un exemple en utilisant EXISTS. Le JOIN à 'action_6_members' risque de gonfler les enregistrements s'il y a plus d'un enfant associé à un enregistrement parent. –
@OMG: mais le DISTINCT annule tout dommage, n'est-ce pas? Aussi, je pense que les gens de 'Action 6' sont sur un plan tarifaire spécial (téléphone portable) - et cela compte le nombre d'appels envoyés entre les deux dates sur le plan Action 6 - donc il n'y aura qu'un seul numéro (au plus) dans le tableau Action 6 pour tout 'numéro_de_fichier' donné. –
hmm, n'aime vraiment pas les jointures mais ok :) Juste au cas où, cette requête devrait sélectionner tout mobile unique (to_number) de la table sent_txts (basé sur le where) mais seulement le compter si le nombre existe dans l'action_6_members, voyez-vous une meilleure façon? – Hailwood