• Publicidad

Consulta MySQL

Todo acerca de las bases de datos que existen: SQL, MySQL, Oracle, Postgres, CSV, etc.

Consulta MySQL

Notapor Superdri » 2017-10-18 16:47 @741

Hola, necesito un poquito de ayuda. Tengo una consulta que funciona en phpmyadmin pero a DBD::mysql parece no gustarle :(
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $query = "
  2. SELECT count(g.spec_id) AS 'contador',g.spec_id,c.name,c.class,
  3. CASE c.class
  4.         WHEN 'Warrior' THEN '#C79C6E'
  5.         WHEN 'Paladin' THEN '#F58CBA'
  6.         WHEN 'Hunter' THEN '#ABD473'
  7.         WHEN 'Rogue' THEN '#FFF569'
  8.         WHEN 'Priest' THEN '#FFFFFF'
  9.         WHEN 'Death Knight' THEN '#C41F3B'
  10.         WHEN 'Shaman' THEN '#0070DE'
  11.         WHEN 'Mage' THEN '#69CCF0'
  12.         WHEN 'Warlock' THEN '#9482C9'
  13.         WHEN 'Monk' THEN '#00FF96'
  14.         WHEN 'Druid' THEN '#FF7D0A'
  15.         WHEN 'Demon Hunter' THEN '#A330C9'
  16. END AS 'class_color'
  17. FROM wow_eu_leadder_rbg g
  18. INNER JOIN wow_specs c on (g.spec_id = c.id)
  19. WHERE spec_id in (71, 72, 73, 70, 255, 259, 260, 261, 250, 251, 252, 263, 269, 103, 104, 577, 581)
  20. GROUP BY g.spec_id
  21. ORDER BY count(g.spec_id) DESC
  22. ";
  23.  
Coloreado en 0.007 segundos, usando GeSHi 1.0.8.4


No sé si la consulta está bien del todo porque phpmyadmin me marca la línea que asigno los colores a la columna class_color, pero la ejecuto en phpmyadmin y me da el resultado esperado en cambio con DBD no funciona.

Saludos y gracias.
Superdri
Perlero nuevo
Perlero nuevo
 
Mensajes: 21
Registrado: 2017-10-06 22:11 @966

Publicidad

Re: Consulta MySQL

Notapor explorer » 2017-10-18 17:25 @767

Pues la sintaxis es correcta, según el comprobador que he encontrado en línea.

Así que el problema debe estar en otra parte.
JF^D Perl Programming Language
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14053
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Consulta MySQL

Notapor Superdri » 2017-10-18 17:53 @787

Hola, gracias por responder, explorer.

No sé dónde está el fallo. ¿Igual es tema del módulo DBD? Lo único que hago es:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $query = "SELECT count(g.spec_id) AS 'contador',g.spec_id,c.name,c.class, CASE c.class WHEN 'Warrior' THEN '#C79C6E' WHEN 'Paladin' THEN '#F58CBA' WHEN 'Hunter' THEN '#ABD473' WHEN 'Rogue' THEN '#FFF569' WHEN 'Priest' THEN '#FFFFFF' WHEN 'Death Knight' THEN '#C41F3B' WHEN 'Shaman' THEN '#0070DE' WHEN 'Mage' THEN '#69CCF0' WHEN 'Warlock' THEN '#9482C9' WHEN 'Monk' THEN '#00FF96' WHEN 'Druid' THEN '#FF7D0A' WHEN 'Demon Hunter' THEN '#A330C9' END AS 'class_color' FROM wow_eu_leadder_rbg g INNER JOIN wow_specs c on (g.spec_id = c.id) WHERE spec_id in (71, 72, 73, 70, 255, 259, 260, 261, 250, 251, 252, 263, 269, 103, 104, 577, 581) GROUP BY g.spec_id ORDER BY count(g.spec_id) DESC";
  2.                
  3. my $sth = $db->prepare($query);
  4. $sth->execute() or die "imposible ejecutar la consulta $query";
  5.  
Coloreado en 0.008 segundos, usando GeSHi 1.0.8.4

Saludos
Superdri
Perlero nuevo
Perlero nuevo
 
Mensajes: 21
Registrado: 2017-10-06 22:11 @966

Re: Consulta MySQL

Notapor explorer » 2017-10-19 12:22 @557

DBD no es un módulo que funciona por sí solo. Quizás te refieras a DBD::mysql. Pero lo normal es que estés usando DBI, que es la capa más externa de acceso a la bases de datos. Mientras, DBD::mysql envuelve al propio motor de base de datos, por lo que los errores que devuelve se refieren al propio motor y no a las consultas de los usuarios.

Yo lo que haría sería mirar el valor de errstr(), en caso de que se produzca algún error, en cualquier nivel:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $dbh = DBI->connect($data_source, $username, $password)              or die $DBI::errstr;
  2.  
  3. my $sth = $dbh->prepare($query)                                         or die $DBI::errstr;
  4.  
  5. my $res = $sth->execute()                                               or die $DBI::errstr;
Coloreado en 0.007 segundos, usando GeSHi 1.0.8.4
Si estuviese ocurriendo un error en alguno de los módulos, los estarías viendo en la salida estándar, bien sea en la terminal o en la página web o en el registro error.log, dependiendo de dónde estés ejecutando este programa.
JF^D Perl Programming Language
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14053
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Bases de datos

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados