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

Consultas relacionadas entre si

Estas en el tema de Consultas relacionadas entre si en el foro de Bases de Datos General en Foros del Web. Quiero hacer una consulta a la base de datos donde en la tabla user , esta el campo userid , esa tabla la quiero enlazar ...
  #1 (permalink)  
Antiguo 15/09/2008, 14:13
 
Fecha de Ingreso: agosto-2006
Mensajes: 173
Antigüedad: 17 años, 8 meses
Puntos: 1
Consultas relacionadas entre si

Quiero hacer una consulta a la base de datos donde en la tabla user, esta el campo userid, esa tabla la quiero enlazar en la consulta con otra que se llama vbookie_bets_placed, que tambien incluye un campo userid, los cuales tienen los mismos numeros de identificador en el campo userid.

Y la tabla vbookie_bets_placed, coincide en el campo item_id los mismo valores de identificador que las tablas vbookie_items y vbookie_item_options, ¿como podría hacer la consulta?

Es decir que cuando muestre la consulta me muestre los datos relacionados por el identificador entre todos las tablas

Muchas gracias por vuestra ayuda, no se si me he explicado bien
  #2 (permalink)  
Antiguo 15/09/2008, 14:20
Avatar de the_web_saint  
Fecha de Ingreso: mayo-2008
Ubicación: localhost/tierra/america/panama
Mensajes: 1.229
Antigüedad: 15 años, 11 meses
Puntos: 43
Respuesta: Consultas relacionadas entre si

en el where coloca que user.userid=vbookie_bets_placed.userid and vbookie_bets_placed.item_id and vbookie_item_options.item_id and vbookie_bets_placed.item_id and vbookie_items.item_id

de esta forma mas o menos, espero te funcione
__________________
..::The Saint::..
El pesimista se queja del viento; el optimista espera que cambie; el realista ajusta las velas.
  #3 (permalink)  
Antiguo 15/09/2008, 14:43
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Consultas relacionadas entre si

Tema trasladado a Bases de Datos.
  #4 (permalink)  
Antiguo 16/09/2008, 01:11
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Consultas relacionadas entre si

Cita:
Iniciado por txino_2 Ver Mensaje
Quiero hacer una consulta a la base de datos donde en la tabla user, esta el campo userid, esa tabla la quiero enlazar en la consulta con otra que se llama vbookie_bets_placed, que tambien incluye un campo userid, los cuales tienen los mismos numeros de identificador en el campo userid.

Y la tabla vbookie_bets_placed, coincide en el campo item_id los mismo valores de identificador que las tablas vbookie_items y vbookie_item_options, ¿como podría hacer la consulta?

...
También puede hacerse con un cruce INNER JOIN, y, aunque en principio pudiera no parecerlo, es mejor sobre todo cuando las tablas tienen muchos datos, además de dejar el código más claro cuando es necesario añadir otra restricción con el WHERE.



Cita:
SELECT * FROM user INNER JOIN vbookie_bets_placed ON user.userid=vbookie_bets_placed.userid INNER JOIN vbookie_bets_placed ON vbookie_bets_placed.item_id = vbookie_items.item_id INNER JOIN vbookie_item_options ON vbookie_items.item_id =vbookie_item_options.item_id
Si no me he equivocado al establecer las relaciones
  #5 (permalink)  
Antiguo 16/09/2008, 02:21
 
Fecha de Ingreso: agosto-2006
Mensajes: 173
Antigüedad: 17 años, 8 meses
Puntos: 1
Respuesta: Consultas relacionadas entre si

Cita:
Iniciado por the_web_saint Ver Mensaje
en el where coloca que user.userid=vbookie_bets_placed.userid and vbookie_bets_placed.item_id and vbookie_item_options.item_id and vbookie_bets_placed.item_id and vbookie_items.item_id

de esta forma mas o menos, espero te funcione
Puesto así
Código PHP:
$query_Recordset1 "SELECT * FROM `user` WHERE user.userid=vbookie_bets_placed.userid and vbookie_bets_placed.item_id and vbookie_item_options.item_id and vbookie_bets_placed.item_id and vbookie_items.item_id ORDER BY username ASC"
Da el siguiente error

Unknown column 'vbookie_bets_placed.userid' in 'where clause'

Cita:
Iniciado por jurena Ver Mensaje
También puede hacerse con un cruce INNER JOIN, y, aunque en principio pudiera no parecerlo, es mejor sobre todo cuando las tablas tienen muchos datos, además de dejar el código más claro cuando es necesario añadir otra restricción con el WHERE.





Si no me he equivocado al establecer las relaciones
Código PHP:
$query_Recordset1 "SELECT * FROM user INNER JOIN vbookie_bets_placed ON user.userid=vbookie_bets_placed.userid INNER JOIN vbookie_bets_placed ON vbookie_bets_placed.item_id = vbookie_items.item_id INNER JOIN vbookie_item_options ON vbookie_items.item_id =vbookie_item_options.item_id ORDER BY username ASC"
Me da el siguiente error

Not unique table/alias: 'vbookie_bets_placed'

Por mas vueltas que le doy al tema me atasco, muchas gracias por vuestra aportacion
  #6 (permalink)  
Antiguo 16/09/2008, 03:13
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Consultas relacionadas entre si

Me equivoqué en una de las relaciones. Prueba esta:

SELECT * FROM user INNER JOIN vbookie_bets_placed ON user.userid=vbookie_bets_placed.userid INNER JOIN vbookie_items ON vbookie_bets_placed.item_id = vbookie_items.item_id INNER JOIN vbookie_item_options ON vbookie_items.item_id =vbookie_item_options.item_id
  #7 (permalink)  
Antiguo 16/09/2008, 04:00
 
Fecha de Ingreso: agosto-2006
Mensajes: 173
Antigüedad: 17 años, 8 meses
Puntos: 1
Respuesta: Consultas relacionadas entre si

Ahora perfecto, muchas gracias, te añado karma que te lo mereces
  #8 (permalink)  
Antiguo 16/09/2008, 04:05
 
Fecha de Ingreso: agosto-2006
Mensajes: 173
Antigüedad: 17 años, 8 meses
Puntos: 1
Respuesta: Consultas relacionadas entre si

Una última cuestión, si la consulta es esta

Código PHP:
<?php
mysql_select_db
($database_VirtualBet$VirtualBet);
$query_Recordset1 "SELECT * FROM user INNER JOIN vbookie_bets_placed ON user.userid=vbookie_bets_placed.userid INNER JOIN vbookie_items ON vbookie_bets_placed.item_id = vbookie_items.item_id INNER JOIN vbookie_item_options ON vbookie_items.item_id =vbookie_item_options.item_id ORDER BY username ASC";
$Recordset1 mysql_query($query_Recordset1$VirtualBet) or die(mysql_error());
$row_Recordset1 mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 mysql_num_rows($Recordset1);
?>
¿Como hago el echo?

Lo he puesto así

Código PHP:
<?php echo $row_Recordset1['vbookie_bets_placed.bet_placed']; ?>
Para sacar un dato de la tabla vbookie_bets_placed, pero no me ofrece resultad ninguno
  #9 (permalink)  
Antiguo 16/09/2008, 05:39
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Consultas relacionadas entre si

esto es un problema php y deberás preguntarlo en el foro PHP. De todas maneras y por lo que se refiere a MysqL, debes quitar ese asterisco de SELECT * y poner los nombres de los campos con el nombre de la tabla por delante y con un punto en medio. Luego, si los nombres de los campos no son coincidentes, podrás invocarlos sin problema como dices $row['nombrecampo'], pero si son los mismos entre distintas tablas, deberás usar alias en el select de dichos campos, por ejemplo, tabla1.item as item1, tabla2.item as item2...
y luego $row['item1']. No se pone el nombre de la tabla, sino del campo o del alias, pero esto es algo de PHP.

Nota: el AS no es necesario, podrás utilizar tabla1.item item1, tabla2.item item2...

Y recuerda que en este foro no se nos permite escribir variables ni código de programación que no sea SQL con datos constantes... Procura evitar escribir ese código PHP en este foro: es para el mejor funcionamiento del foro y ayuda a delimitar los problemas, si son de SQL o de programación, antes de hacer las preguntas. Y si tienes preguntas para PHP, dirígete a ese foro. Pásate por allí, si no sabes hacer la iteración para mostrar los datos...

Última edición por jurena; 16/09/2008 a las 05:52
  #10 (permalink)  
Antiguo 16/09/2008, 07:09
 
Fecha de Ingreso: agosto-2006
Mensajes: 173
Antigüedad: 17 años, 8 meses
Puntos: 1
Respuesta: Consultas relacionadas entre si

Ok lo siento, ya esta la cosa solucionada muchas gracias por todo
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 08:29.