Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Consulta en varias tablas

Estas en el tema de Consulta en varias tablas en el foro de Mysql en Foros del Web. Hola, llevo un tiempo buscando una solucion a esto, la verdad no soy programador, tengo algunos conocimientos, pero esto ya es demasiado para mi, bueno ...
  #1 (permalink)  
Antiguo 18/02/2012, 03:36
 
Fecha de Ingreso: febrero-2012
Mensajes: 9
Antigüedad: 12 años, 2 meses
Puntos: 0
Busqueda Consulta en varias tablas

Hola, llevo un tiempo buscando una solucion a esto, la verdad no soy programador, tengo algunos conocimientos, pero esto ya es demasiado para mi, bueno ahí va la consulta (la mia claro )

tengo dos tablas

tabla1 (sid, marca)
tabla2 (sid, modelos)

lo que intento conseguir es buscar en tabla1 una marca, pongamos seat, me dará una sid, pongamos 1, bueno pues con ese 1 ir a tabla2 y listar todos los modelos con sid 1.

me había imaginado algo así

select tabla1.sid, tabla2.modelos, tabla2.sid from tabla1, tabla2 WHERE marca LIKE seat

pero de aquí no soy capaz de pasar

bueno ahí queda, si alguien e puede ayudar, pues muy agradecido.
  #2 (permalink)  
Antiguo 18/02/2012, 09:13
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Consulta en varias tablas

Es medio de manual...
Código MySQL:
Ver original
  1. SELECT T1.Marca, T2.modelos
  2. FROM tabla1 T1 INNER JOIN tabla2 T2 ON T1.sid = T2.sid
  3. WHERE T1.marca = 'seat'
Nota: LIKE se usa para busquedas por aproximación, pero si no le pones los "%" para indicar por donde querrás las variaciones, su resultado es igual que usar "=".
Para usa LIKE debería ser mas o menos:
Código MySQL:
Ver original
  1. SELECT T1.Marca, T2.modelos
  2. FROM tabla1 T1 INNER JOIN tabla2 T2 ON T1.sid = T2.sid
  3. WHERE T1.marca LIKE 'SEAT%'
Nota2: Nunca uses '%palabra%', es decir, comodines en ambos lados. Cuando lo haces le obligas al MySQL a leer toda la tabla sin importar cuantos registros tenga, y eso resulta en un table scanning, lo que es una forma terriblemente ineficiente de busqueda.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 21/02/2012, 12:42
 
Fecha de Ingreso: febrero-2012
Mensajes: 9
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Consulta en varias tablas

hola, antes de nada, gracias por tu respuesta, mira lo he intentado, pero no consigo que funciona, igual es que no he explicado demasiado bien loque quería.

tengo estas dos tablas, adjunto un archivo con la estructura y datos (de prueba)

http://pastebin.com/DLUrqKWT

mi idea es esta

buscar en la tabla oo_jos_sobipro_field_option_selected, en el campo optValue un valor, por ejemplo Essilor, quedarme con los sid

y con esos sid, ir a la tabla oo_jos_sobipro_field_data y de las filas con ese sid extraer el campo baseData, pero ojo cada sid, tiene varios fid, me interesaría alguno de ellos

siento la explicación con lenguaje de cadena 100, pero no doy pa mas

gracias de antemano
  #4 (permalink)  
Antiguo 22/02/2012, 09:48
 
Fecha de Ingreso: febrero-2012
Mensajes: 9
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Consulta en varias tablas

no veis factible realizar esto?, agradecería algún consejo. Gracias
  #5 (permalink)  
Antiguo 23/02/2012, 04:37
 
Fecha de Ingreso: febrero-2012
Mensajes: 9
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Consulta en varias tablas

hola de nuevo, intento hacer avances, este es un primer códig con el que estoy haciendo pruebas

Código PHP:
Ver original
  1. <h1>hola</h1>
  2. <?
  3. $consultasid="SELECT sid FROM oo_jos_sobipro_field_option_selected WHERE optValue = 'Essilor'";
  4. $resultadosid=mysql_query($consultasid);
  5. $num_resultadossid=mysql_num_rows($resultadosid);
  6.  
  7.  
  8. echo "numero de filas ".$num_resultadossid;
  9. $filassid=mysql_fetch_array($resultadosid);
  10.     for ($y=0;$y<$num_resultadossid;$y++)
  11.     {
  12. echo "<br />"; 
  13. echo $filassid[sid];
  14. }
  15. ?>
con el pretendo primero consultar la tabla oo_jos_sobipro_field_option_selected para preguntarle los sid donde el optvalue es Essilor

luego imprimo el número de filas y despues me gustaría imprimir los sid, pero no se como.

esta es mi idea para despues trasladar estos sid a la otra tabla y poder consultar unos cuantos campos, intento hacer esto para aprender algo, pero no avanzo.

Última edición por opticooptometrista; 23/02/2012 a las 11:33
  #6 (permalink)  
Antiguo 23/02/2012, 11:35
 
Fecha de Ingreso: febrero-2012
Mensajes: 9
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Consulta en varias tablas

bueno, ya he dado un paso, y es que no obtenía resultados de este código, bueno resultados si, pero me faltaba la salida de la fila 13, me faltaban las comillas

echo $filasid["sid"];

¿cómo hago ahora para de la tabla oo_jos_sobipro_field_data sacar la informacion?

estoy intentadno este código

Código PHP:
Ver original
  1. <h1>hola</h1>
  2. <?
  3. $consultasid="SELECT sid FROM oo_jos_sobipro_field_option_selected WHERE optValue = 'Essilor'";
  4. $resultadosid=mysql_query($consultasid);
  5. $num_resultadossid=mysql_num_rows($resultadosid);
  6.  
  7.  
  8. echo "numero de filas ".$num_resultadossid;
  9.    
  10.     for ($y=0;$y<3;$y++)
  11.         {
  12.             $filassid=mysql_fetch_array($resultadosid);
  13.             echo "<br />"; 
  14.             echo $filassid["sid"];
  15.  
  16.  
  17. $consultafid="SELECT baseData FROM oo_jos_sobipro_field_data WHERE sid = $filassid['sid'] AND fid = '51'";
  18. $resultadofid=mysql_query($consultafid);
  19. $filasfid=mysql_fetch_array($resultadofid);
  20. echo "nombre del progresivo ".$filasfid["baseData"];
  21.  
  22. }
  23.  
  24. ?>

pero no estoy seguro que meter una consulta dentro de un for sea buena idea y de todos modos no funciona, y creo que el problema está en esta parte, me podeis decir donde?

WHERE sid = $filassid['sid']

Última edición por opticooptometrista; 23/02/2012 a las 12:05

Etiquetas: select, tabla, tablas
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 07:40.