Foros del Web » Programando para Internet » PHP »

Unknown column 'subscribers.subscribedate' in 'order clause'

Estas en el tema de Unknown column 'subscribers.subscribedate' in 'order clause' en el foro de PHP en Foros del Web. Hola como va todo! Veréis estoy teniendo un error en un script alguien me podría confirmar donde esta el fallo el error que da es ...
  #1 (permalink)  
Antiguo 07/10/2016, 07:03
 
Fecha de Ingreso: diciembre-2014
Mensajes: 20
Antigüedad: 9 años, 3 meses
Puntos: 0
Unknown column 'subscribers.subscribedate' in 'order clause'

Hola como va todo!

Veréis estoy teniendo un error en un script alguien me podría confirmar donde esta el fallo el error que da es el siguiente:

Unknown column 'subscribers.subscribedate' in 'order clause'



y la Query es esta:

INSERT INTO email_queues (queueid, queuetype, ownerid, recipient, processed)SELECT DISTINCT 13, 'send', 1, subscribers.subscriberid, 0 FROM email_list_subscribers AS subscribers JOIN email_lists AS lists ON lists.listid = subscribers.listid AND lists.listid IN (1) WHERE subscribers.listid IN (1) AND ( ( subscribers.subscriberid IN (SELECT d.subscriberid AS subscriberid FROM email_subscribers_data d WHERE d.fieldid = 15 AND d.data < 51) ) ) AND (subscribers.unsubscribed=0 AND subscribers.bounced=0) UNION SELECT DISTINCT 13, 'send', 1, subscribers.subscriberid, 0 FROM email_list_subscribers AS subscribers JOIN email_lists AS lists ON lists.listid = subscribers.listid AND lists.listid IN (1) WHERE subscribers.listid IN (1) AND ( ( subscribers.subscriberid IN (SELECT d.subscriberid AS subscriberid FROM email_subscribers_data d WHERE d.fieldid = 16 AND d.data < 4) ) ) AND (subscribers.unsubscribed=0 AND subscribers.bounced=0) ORDER BY subscribers.subscribedate ASC LIMIT 1000000000
  #2 (permalink)  
Antiguo 07/10/2016, 08:14
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 13 años, 6 meses
Puntos: 123
Respuesta: Unknown column 'subscribers.subscribedate' in 'order clause'

Esta en el order by.

Básicamente la columna subscribedate no existe en la tabla subscribers
Código SQL:
Ver original
  1. ORDER BY subscribers.subscribedate ASC
__________________
Unset($vida['malRollo']);
  #3 (permalink)  
Antiguo 07/10/2016, 09:12
Avatar de skywolker  
Fecha de Ingreso: julio-2011
Ubicación: España
Mensajes: 195
Antigüedad: 12 años, 8 meses
Puntos: 8
Respuesta: Unknown column 'subscribers.subscribedate' in 'order clause'

Haz un SET.
  #4 (permalink)  
Antiguo 07/10/2016, 11:09
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 3 meses
Puntos: 606
Respuesta: Unknown column 'subscribers.subscribedate' in 'order clause'

Cita:
Iniciado por skywolker Ver Mensaje
Haz un SET.
Para?

Como ya han dicho, el motivo es que está usando una columna que no existe (bien porque haya cometido un error al escribirla en la consulta o porque en la tabla no esté.
__________________
Aviso: No se resuelven dudas por MP!
  #5 (permalink)  
Antiguo 07/10/2016, 12:58
 
Fecha de Ingreso: diciembre-2014
Mensajes: 20
Antigüedad: 9 años, 3 meses
Puntos: 0
Respuesta: Unknown column 'subscribers.subscribedate' in 'order clause'

como pone en el codigo que os pase:
FROM email_list_subscribers AS subscribers JOIN

la tabla en la BD es email_list_subscribers pero renombrada a subscribers

entonces la tabla email_list_subscribers existe y la columna también no es eso.

Puede ser que lo estoy ejecutando en un VPS con 2GB y que la consulta es demasiado "fuerte" en la tabla hay mas de 20.000 resultados y fijaros que hay un LIMIT 1000000000 lo que se esta haciendo el script es crear un array en php con esos datos y es posible que sea eso?
  #6 (permalink)  
Antiguo 07/10/2016, 14:47
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 3 meses
Puntos: 606
Respuesta: Unknown column 'subscribers.subscribedate' in 'order clause'

Podrías poner la definición de la tabla email_list_subscribers?
__________________
Aviso: No se resuelven dudas por MP!
  #7 (permalink)  
Antiguo 07/10/2016, 18:37
 
Fecha de Ingreso: diciembre-2014
Mensajes: 20
Antigüedad: 9 años, 3 meses
Puntos: 0
Respuesta: Unknown column 'subscribers.subscribedate' in 'order clause'

Por mas que lo he revisado no encuentro el problema

Este es la definicion de la tabla y el código desde donde se monta la query

email_list_subscribers
Código:
Columna				Tipo			Nulo	Predeterminado
subscriberid			int(11)			No*		
listid				int(11)			No*	0*	
emailaddress			varchar(200)		Sí*	NULL*	
domainname			varchar(100)		Sí*	NULL*	
format				char(1)			Sí*	NULL*	
confirmed			char(1)			Sí*	0*	
confirmcode			varchar(32)		Sí*	NULL*	
requestdate			int(11)			Sí*	0*	
requestip			varchar(20)		Sí*	NULL*	
confirmdate			int(11)			Sí*	0*	
confirmip			varchar(20)		Sí*	NULL*	
subscribedate			int(11)			Sí*	0*	
bounced				int(11)			Sí*	0*	
unsubscribed			int(11)			Sí*	0*	
unsubscribeconfirmed		char(1)			Sí*	0*	
formid				int(11)			Sí*	0*

Código PHP:
    function GetSubscribersFromSegment($segmentIDs$countonly false$queuedetails null$sortdetails = array())
    {
        
$return = array('count' => 0'subscriberlist' => 0'lists' => array());

        if (empty(
$sortdetails)) {
            
$sortdetails = array('SortBy' => 'emailaddress''Direction' => 'asc''Max' => 100);
        }

        require_once(
dirname(__FILE__) . '/segment.php');

        
$count 0;
        
$lists = array();
        
$selectQueries = array();
        foreach (
$segmentIDs as $id) {
            
$segmentAPI = new Segment_API();

            
// Cannot load segment
            
$status $segmentAPI->Load($id);
            if (!
$status) {
                return array();
            }

            
// Get lists that are used in this segment
            
$tempLists $segmentAPI->GetMailingListUsed();
            
$lists array_merge($lists$tempLists);

            
// Get count
            
$count += $segmentAPI->GetSubscribersCount(0true);

            
// Get query
            
$tempQuery $segmentAPI->GetSubscribersQueryString(true);
            
$selectQueries[] = preg_replace('/^SELECT .*? FROM?/i'''$tempQuery);
        }
        unset(
$segmentAPI);

        
checksize($count, (isset($sortdetails['Max'])? $sortdetails['Max'] : 100), $countonly);
        
$return['count'] = $count;
        
$return['lists'] = $lists;

        if (empty(
$selectQueries)) {
            return array();
        }

        if (
$countonly) {
            return 
$return;
        }

        if (empty(
$queuedetails)) {
            
$temp 'SELECT DISTINCT subscribers.subscriberid AS subscriberid FROM ';
            
$selectQuery $temp implode(" UNION {$temp}"$selectQueries);
        } else {
            
$queueID intval($queuedetails['queueid']);
            
$queueType $this->Db->Quote($queuedetails['queuetype']);
            
$queueOwnerID intval($queuedetails['ownerid']);

            
$temp "SELECT DISTINCT {$queueID}, '{$queueType}', {$queueOwnerID}, subscribers.subscriberid, 0 FROM ";

            
$selectQuery 'INSERT INTO [|PREFIX|]queues (queueid, queuetype, ownerid, recipient, processed)';
            
$selectQuery .= $temp implode(" UNION {$temp}"$selectQueries);
        }

        
setmax($sortdetails$selectQuery);
        
$selectQuery preg_replace('/l.subscribedate/''subscribers.subscribedate'$selectQuery);

        
$search_result $this->Db->Query($selectQuery);
        if (!
$search_result) {
            
trigger_error(__CLASS__ '::' __METHOD__ " -- Unable to query database with the following query string: {$selectQuery}"E_USER_NOTICE);
            return array();
        }

        if (!empty(
$queuedetails)) {
            return array();
        }

        
$subscriber_results = array();
        while (
$row $this->Db->Fetch($search_result)) {
            
$subscriber_results[] = $row;
        }
        
$return['subscriberlist'] = $subscriber_results;

        return 
$return;
    } 
  #8 (permalink)  
Antiguo 08/10/2016, 06:08
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 13 años, 6 meses
Puntos: 123
Respuesta: Unknown column 'subscribers.subscribedate' in 'order clause'

Pues si no es eso, quizas lo mejor es preguntar en el apartado de base de datos.
Eso si mejor dejales la sentencia de forma medio leible
Código SQL:
Ver original
  1. INSERT INTO email_queues (queueid, queuetype, ownerid, recipient, processed)
  2.  
  3.     SELECT DISTINCT 13, 'send', 1, subscribers.subscriberid, 0
  4.     FROM email_list_subscribers AS subscribers
  5.     JOIN email_lists AS lists ON lists.listid = subscribers.listid AND lists.listid IN (1)
  6.         WHERE subscribers.listid IN (1)
  7.             AND (    
  8.                     (
  9.                         subscribers.subscriberid IN (
  10.                                                         SELECT d.subscriberid AS subscriberid
  11.                                                         FROM email_subscribers_data d
  12.                                                         WHERE d.fieldid = 15 AND d.DATA < 51
  13.                                                     )
  14.                     )
  15.                 )
  16.             AND (subscribers.unsubscribed=0 AND subscribers.bounced=0)
  17.    
  18.     UNION
  19.  
  20.     SELECT DISTINCT 13, 'send', 1, subscribers.subscriberid, 0
  21.     FROM email_list_subscribers AS subscribers
  22.     JOIN email_lists AS lists ON lists.listid = subscribers.listid AND lists.listid IN (1)
  23.         WHERE subscribers.listid IN (1)
  24.             AND (
  25.                     (
  26.                         subscribers.subscriberid IN (
  27.                                                         SELECT d.subscriberid AS subscriberid
  28.                                                         FROM email_subscribers_data d
  29.                                                         WHERE d.fieldid = 16 AND d.DATA < 4
  30.                                                     )
  31.                     )
  32.                 )
  33.             AND (subscribers.unsubscribed=0 AND subscribers.bounced=0)
  34.    
  35.     ORDER BY subscribers.subscribedate ASC
  36.     LIMIT 1000000000
__________________
Unset($vida['malRollo']);
  #9 (permalink)  
Antiguo 08/10/2016, 09:50
 
Fecha de Ingreso: diciembre-2014
Mensajes: 20
Antigüedad: 9 años, 3 meses
Puntos: 0
Respuesta: Unknown column 'subscribers.subscribedate' in 'order clause'

ok eso haré @xerifandtomas.

Gracias a todos.

Etiquetas: column, order, select, unknown
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:32.