Foros del Web » Programando para Internet » PHP »

Hacer Select con variable para enlazar tablas

Estas en el tema de Hacer Select con variable para enlazar tablas en el foro de PHP en Foros del Web. Hola, les agradecería si me pudieran ayudar: Tengo dos tablas "datosempresa" y "marcasempresa", ambas relacionadas por el campo "CodigoMarcasEmpresa". La select es sencilla: SELECT Nombre, ...
  #1 (permalink)  
Antiguo 10/12/2011, 12:21
 
Fecha de Ingreso: diciembre-2011
Mensajes: 8
Antigüedad: 12 años, 4 meses
Puntos: 0
Hacer Select con variable para enlazar tablas

Hola, les agradecería si me pudieran ayudar:

Tengo dos tablas "datosempresa" y "marcasempresa", ambas relacionadas por el campo "CodigoMarcasEmpresa".

La select es sencilla:
SELECT Nombre, NombreMarca FROM datosempresa, marcasempresa
WHERE datosempresa.CodigoMarcasEmpresa=marcasempresa.CodigoMarcasEmpresa'


Me funciona sin problemas al ejecutarla en una sóla línea. El problema viene si guardo el where en la varible $where , devolviéndome el error: Unknown column 'marcasempresa.CodigoMarcasEmpresa' in 'where clause'


$where
= " WHERE datosempresa.CodigoMarcasEmpresa=marcasempresa.Cod igoMarcasEmpresa";
$sql = 'SELECT Nombre, NombreMarca FROM datosempresa, marcasempresa $where';

Lo curioso que si añado las comillas simples:

$where = " WHERE 'datosempresa.CodigoMarcasEmpresa'='marcasempresa. CodigoMarcasEmpresa'";

Desaparece el error pero no me devuelve la select correcta. Devuelve cero registros. ¿Cuá podría ser el motivo?

Muchas gracias y saludos
  #2 (permalink)  
Antiguo 10/12/2011, 13:15
Avatar de luis010182  
Fecha de Ingreso: julio-2009
Ubicación: Argentina - Capital Federal
Mensajes: 382
Antigüedad: 14 años, 9 meses
Puntos: 27
Respuesta: Hacer Select con variable para enlazar tablas

cambia esto
$sql = 'SELECT Nombre, NombreMarca FROM datosempresa, marcasempresa $where';

por esto
$sql = 'SELECT Nombre, NombreMarca FROM datosempresa, marcasempresa' . $where;
  #3 (permalink)  
Antiguo 10/12/2011, 17:02
 
Fecha de Ingreso: mayo-2008
Mensajes: 103
Antigüedad: 15 años, 10 meses
Puntos: 14
Respuesta: Hacer Select con variable para enlazar tablas

No sé porque al poner comillas te cambia la consulta, pero como te dicen por aquí arriba el problema lo tienes con el encadenamiento de Strings con PHP.
Código:
$cadena1 = "hola";
$cadena2 = "adios";
$cadena1y2 = $cadena1.$cadena2;

//Si lo haces con texto es lo mismo, substituyendo...

$cadena1y2 = "hola".$cadena2;
// o...
$cadena1y2 = $cadena1."adios";
  #4 (permalink)  
Antiguo 11/12/2011, 05:56
 
Fecha de Ingreso: diciembre-2011
Mensajes: 8
Antigüedad: 12 años, 4 meses
Puntos: 0
Respuesta: Hacer Select con variable para enlazar tablas

Muchas gracias luis010182 y Urdaris_Nox!!

$sql = "SELECT Nombre, NombreMarca FROM datosempresa, marcasempresa".$where;

$where = " WHERE datosempresa.CodigoMarcasEmpresa=marcasempresa.Cod igoMarcasEmpresa";

Ahora me sale este error:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE 'datosempresa.CodigoMarcasEmpresa=marcasempresa.Co digoMarcasEmpresa'' at line 1

Utilizo AppServ con PHP 5.2.6

Según los ejemplos que veo no parece que me falte nada...¿?
  #5 (permalink)  
Antiguo 11/12/2011, 09:05
Avatar de oktubre  
Fecha de Ingreso: agosto-2003
Ubicación: en mi casa
Mensajes: 371
Antigüedad: 20 años, 7 meses
Puntos: 4
Respuesta: Hacer Select con variable para enlazar tablas

si ahí realizaste un copy paste a la vista hay errores de ortografía. controla bien los espacios entre datosempresa.CodigoMa...
creo que solo es problemas de los espacios.
lo otro. la mayoría usamos administradores de bases de datos para realizar pruebas de las sentencias sql, ejecutarlas y probar que todo ande bien. te recomiendo probarlas antes en el phpmyadmin o que utilices navicat o software similar que te permita realizar consultas, probarlas y luego pasar el editor de php. buena jornada
__________________
w32.oktubre@mm <----------------<<<<
prefiero cerrar la boca y parecer un tonto que abrirla y confirmarlo.
  #6 (permalink)  
Antiguo 11/12/2011, 09:50
 
Fecha de Ingreso: diciembre-2011
Mensajes: 8
Antigüedad: 12 años, 4 meses
Puntos: 0
Respuesta: Hacer Select con variable para enlazar tablas

Gracias oktubre!.

Con lo de los espacios que comentas solucioné ese error. Quité el espacio antes del where. El caso que con consultas simples ese espacio no da problemas.¿?. El espacio en el ejemplo anterior "a.Cod igo" salío por ponerlo en color rojo...¿?.. pero si, el campo es "CodigoMarcasEmpresa".

$where = "WHERE datosempresa.CodigoMarcasEmpresa=marcasempresa.Cod igoMarcasEmpresa";

$sql = "SELECT Nombre, NombreMarca FROM datosempresa, marcasempresa".$where;

El caso que si ejecuto la select en phpMyAdmin como indicas no me da este tipo de problemas.

Ahora me sale el error: Not unique table/alias: 'datosempresa'...

Gracias a todos y buena semana!!
  #7 (permalink)  
Antiguo 11/12/2011, 12:31
 
Fecha de Ingreso: mayo-2008
Mensajes: 103
Antigüedad: 15 años, 10 meses
Puntos: 14
Respuesta: Hacer Select con variable para enlazar tablas

Cita:
Iniciado por victorjb Ver Mensaje
Ahora me sale el error: Not unique table/alias: 'datosempresa'...

Gracias a todos y buena semana!!
Con un superdominio del inglés, diría que "Tabla/Alias "datosempresa" no única" significa que, quizás, la tabla datosempresa está repetida.

Una de las cosas que yo suelo hacer cuando las consultas SQL se me resisten es usar PHP para guardar la consulta que voy a hacer en una variable, y ejecuto la consulta y además la muestro en pantalla para saber exactamente qué está ejecutando.
Algo así:

Código PHP:
$consulta "";

$consulta "select `nombre` , `medidas` from Bastones WHERE `nombre` LIKE 'superBaston"

$consulta $consulta." AND `medidas` LIKE 'XXL' ";

//ejecuto la consulta, y si da error muestro el error y la consulta
$resultadoConsulta=mysql_query($consulta) or die("Error con la consulta".mysql_error().", con la consulta:".$consulta");

//si se ejecuta igualmente muestro la consulta porque sí
echo $consulta;

Con lo que te he dicho, intenta recoger el error que te está dando y además la consulta que devuelve ese error, y nos la enseñas a ver si vemos algo obvio.
  #8 (permalink)  
Antiguo 11/12/2011, 13:05
 
Fecha de Ingreso: diciembre-2011
Mensajes: 8
Antigüedad: 12 años, 4 meses
Puntos: 0
Respuesta: Hacer Select con variable para enlazar tablas

Muchas gracias de nuevo Urdaris_Nox!!

Utilizando tu script me aparece:

Error con la consulta del tipoNot unique table/alias: 'datosempresa', con la consulta:SELECT Nombre, NombreMarca FROM datosempresa, marcasempresaWHERE datosempresa.CodigoMarcasEmpresa=marcasempresa.Cod igoMarcasEmpresa

Sólo tengo dos tablas: "Datosempresa" y "MarcasEmpresa", relacionadas por "CodigoMarcasEmpresa".

Estas son las tablas.

CREATE TABLE DatosEmpresa(
CodigoEmpresa mediumint(8) unsigned NOT NULL auto_increment,
Nombre varchar(20) NOT NULL default '',
Direccion varchar(50) NOT NULL default '',
Poblacion varchar(10) NOT NULL default '',
CodigoMarcasEmpresa mediumint(8) unsigned NOT NULL,
Anagrama varchar(30) NOT NULL default '',
UNIQUE (CodigoMarcasEmpresa),
UNIQUE (Nombre),
PRIMARY KEY (CodigoEmpresa),
FOREIGN KEY (CodigoMarcasEmpresa) REFERENCES MarcasEmpresa ON DELETE CASCADE

);

////

CREATE TABLE MarcasEmpresa(
CodigoMarcasEmpresa mediumint(8) unsigned NOT NULL,
NombreMarca varchar(40) NOT NULL default '',
PaisMarca varchar(40) NOT NULL default ''
);

.....¿?.......no me explico..si se me complica la consulta...

Etiquetas: enlazar, registro, select, sql, tabla, tablas, variables
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 20:28.