Enlazar campos en MySQL(relaciones)

Pues eso, que en MySQL no tengo ni idea de como se hace. En tipo que se pone?. Desde donde enlazo dicha tabla con la otra?. Si no se puede hacer gráficamente. Alguien sabe como se pone la instruccion en SQL??
graficamente como acces no se puede, tienes k utilizar instrucciones, como REFERENCES

y los campos k relaciones tiene k ser del tipo CLAVE PRIMARIA

sALUDOs
De momento creo que seria asi, pero algo no va bien

ALTER TABLE noticias(
nom_categoria varchar(30) CONSTRAINT fk_noticia FOREIGN KEY REFERENCES categorias (nombre)
);

Las tablas son:

noticias(id_noticias,titulo,cuerpo,categoria)
categoria(id_categoria,nombre)

Quiero referenciar ell nombre de la categoria con el campo categoria de la tabla noticias.
teniendo las tablas kreadas, y puestas las claves principales bien, prueba esto;

ALTER TABLE noticias
ALTER COLUMN categoria integer REFERENCES categoria (nombre);



PD: para k se puedan relacionar, tienen k ser campos del mismo tipo ,
osea los el campo categoria de la tabla noticias, y el campo nombre de la tabla categoria, pones primary key


creacion de la tabla (ma o men)


CREATE TABLE noticias
(
id_noticias integer NOT NULL UNIQUE PRIMARY KEY,
titulo varchar(20) ,
ect ,
ect
)
Pues con las tablas creadas:

Las tablas son:

noticias(id_noticias,titulo,cuerpo,categoria)
categoria(id_categoria,nombre)

Sigue sin funcionarme, y he probado:

ALTER TABLE noticias
ALTER COLUMN categoria integer REFERENCES categoria (nombre);

Pero la columna categoria de noticias es VARCHAR2(10) no tendra algo que ver eso?. Como en en el ejemplo de arriba pone categoria integer REFERENCES
para no tener problemas, los 2 campos k relaciones, ponlos k sean integer k kiere decir numerico, por k varchar es tipo texto.

TABLA NOTICIAS
---------------------
CREATE TABLE noticias
(
id_noticias integer NOT NULL UNIQUE PRIMARY KEY,
titulo varchar(20),
categoria integer NOT NULL
)

TABLA CATEGORIA
----------------------
CREATE TABLE categoria
(
id_categoria integer NOT NULL UNIQUE PRIMARY KEY,
titulo varchar(20)
)


VALES, las tablas las tienes hay kreadas a modo de referencia con los campos k importan.

vale si te fijas, los campos k relacionaras, son integer (numerico) y aparte son NOT NULL, osea k estos campos no pueden estar vacios, ahora tonces, utiliza en ALTER

ALTER TABLE noticias
ALTER COLUMN categoria integer REFERENCES categoria (id_categoria);

PD: cuando krees las tablas, no introduzcas datos, y comenta el error k te da, si te da }:/
suerte,
aber si alguien te puede ayudar con mas conocimiento
jeje

saludos
El problema de poner integer a esps campos es que las categorias tendiran que tener nombres numericos, y lo que quiero es que tengas nombres con letras.
yo diria, k para acer una relacion, tiene k ser los campos k relaciones index, y para k sean index, debe ser numericos, pero no lo se, e estado probando relacionar tablas con campo tipo texto, y no hay manera.

pero la relacion tonces es u poko rara, jeje, por k entonces para k tienes kreada la tabla categoria?, para saber k la categoria, por ejemplo punk, es el numero 3?

nose,

PD: lo acabo e probar y si ke me a rulao, vale tonces pon el campo varchar(20) por ejemplo, pero eso si, los 2 campos k relacionas ponles clave (PRIMARY KEY)

saludos , ya contaras, jaja
lo probare con numeros a ver que tal
En SQL es así:

create table CATEGORIA(id_categoria int, nombre varchar2(10), primary key(id_categoria));

create table NOTICIAS(id_noticias int, titulo varchar2(25), cuerpo varchar2(500), categoria int, primary key(id_noticias), foreign key (categoria) references CATEGORIA (categoria));

Ya le pones el tipo quieras.
9 respuestas