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

relacionar dos tablas

Estas en el tema de relacionar dos tablas en el foro de Mysql en Foros del Web. Buenas noches. Sigo sin entender como relacionar dos tablas. la primera tabla la cree asi: mysql> CREATE TABLE numeros (id_codigo INT NOT NULL AUTO_INCREMENT,prim INT ...
  #1 (permalink)  
Antiguo 02/02/2014, 00:36
 
Fecha de Ingreso: junio-2013
Mensajes: 9
Antigüedad: 11 años, 4 meses
Puntos: 0
relacionar dos tablas

Buenas noches.
Sigo sin entender como relacionar dos tablas.

la primera tabla la cree asi:

mysql> CREATE TABLE numeros (id_codigo INT NOT NULL AUTO_INCREMENT,prim INT NULL, segu INT NULL,terc INT NULL, PRIMARY KEY (id_codigo))ENGINE=INNODB;

después le cargue datos desde un txt

LOAD DATA INFILE '/xxxxx/yyyyyy/PRUEBAS/APRENDIENDO/datos.txt' INTO TABLE numeros FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' (prim, segu, terc);

y en la tabla se ve asi:

mysql> select * from numeros;
+-----------+------+------+------+
| id_codigo | prim | segu | terc |
+-----------+------+------+------+
| 1 | 0 | 1 | 2 |
| 2 | 0 | 1 | 3 |
| 3 | 0 | 1 | 4 |
| 4 | 0 | 1 | 5 |
| 5 | 0 | 1 | 6 |
| 6 | 0 | 1 | 7 |
| 7 | 0 | 1 | 8 |
| 8 | 0 | 1 | 9 |
| 9 | 0 | 2 | 3 |
| 10 | 0 | 2 | 4 |
| 11 | 0 | 2 | 5 |
| 12 | 0 | 2 | 6 |
| 13 | 0 | 2 | 7 |
| 14 | 0 | 2 | 8 |
| 15 | 0 | 2 | 9 |
| 16 | 0 | 3 | 4 |
| 17 | 0 | 3 | 5 |
| 18 | 0 | 3 | 6 |
| 19 | 0 | 3 | 7 |
| 20 | 0 | 3 | 8 |

etc: hasta el id_codigo 120
__________________________________________________ _________________________

luego tengo otra tabla que me dice cuantos numeros primos hay en el id:codigo 1, 2 , 3 etc
por ejemplo:

id_codigo,,
prim segu terc
| 1 | 0 | 1 | 2 |........................................... un numero primo
| 2 | 0 | 1 | 3 |...........................................un numero primo
| 3 | 0 | 1 | 4 |...........................................ningún numero primo
| 4 | 0 | 1 | 5 |...........................................un numero primo

la segunda tabla tiene la cantidad de numeros primos:

mysql> CREATE TABLE primos (id_primos INT NOT NULL AUTO_INCREMENT, primos INT, PRIMARY KEY(id_primos), id_codigo INT, FOREIGN KEY(id_codigo) REFERENCES numeros(id_codigo))ENGINE=INNODB;

le carge los datos:

mysql> LOAD DATA INFILE '/xxxxx/yyyyyy/PRUEBAS/APRENDIENDO/primos.txt' INTO TABLE primos FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' (primos);

se ve asi:

id_primos primos
1 1
2 1
3 0
4 1

y asi hasta el id_primos 120

algunas convinaciones de la primera tabla tienen 2 o 3 numeros primos, por ejemplo:

id_codigo,,
prim segu terc
| 10 | 1 | 2 | 3 |........................................... dos numeros primos
| 11 | 0 | 1 | 3 |...........................................un numero primo
| 12 | 2 | 3 | 5 |...........................................tres numeros primos
| 13| 0 | 1 | 5 |...........................................un numero primo

COMO RELACIONO LAS DOS TABLAS, PARA QUE CUANDO CONSULTE POR EJEMPLO:

SELECT * FROM numeros where id_codigo BETWEEN 12 AND 50;

SALGA ALGO ASI:
id_codigo id_primos primos
| 12 | 0 | 2 | 6 | x 1
| 13 | 0 | 2 | 7 | x 2
| 14 | 0 | 2 | 8 | x 1
| 15 | 0 | 2 | 9 | x 1
| 16 | 0 | 3 | 4 | x 1
| 17 | 0 | 3 | 5 | x 2
| 18 | 0 | 3 | 6 | x 1
| 19 | 0 | 3 | 7 | x 2
| 20 | 0 | 3 | 8 | x 1

etc..............hasta id_codigo 50

GRACIAS POR SU AYUDA!!!!!!
  #2 (permalink)  
Antiguo 03/02/2014, 02:25
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 7 meses
Puntos: 574
Respuesta: relacionar dos tablas

Código MySQL:
Ver original
  1. SELECT * FROM numeros n
  2.        LEFT JOIN primos p
  3.        ON n.id_codigo=p.id_codigo  
  4. WHERE n.id_codigo BETWEEN 12 AND 50;

13.2.7.1. Sintaxis de JOIN

No confundas las FK, las cuales son restricciones de los datos que pueden almacenar las tablas. Y el hecho de relacionar dos tablas en una consulta.

La FK que has definido lo único que hace es obligar a almacenar "id_codigo" en la tabla primos que esten previamente en la tabla numeros.

(No entiendo muy bien los ejemplos de datos que has puesto
)

__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 03/02/2014 a las 02:33

Etiquetas: llave, primaria, relaciones, 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 00:57.