MySql Tablo Birleştirme

Arkadaşlar mysql'de 2 ve daha fazla tablo birbiriyle nasıl birleştiriliyor. Aşağıdaki resimlere göre anlatabilir misiniz?

Resimlerde görüldüğü gibi sınav tablosunu soru tablosuna, seçenek tablosunu soru tablosuna bağlamak istiyorum.

Ama şöyle de bir düşüncem var. Seçenekler tablosunu sorular tablosundan ayrı tutmak mantıklı mı? Buna da cevap verebilir misiniz?

Birleştirme işlemini INNER JOIN kullanarak yapabilirsiniz.
Fakat şu an kullandığınız yapı oldukça yorucu.

Seçenekler tablosunda her satıra bir seçenek yazmak yerine secenek_a, secenek_b, secenek_c ... veya secenek_1, secenek_2 ... şeklinde sütunlar ekleyin.

Bu şekilde sorular ve seçenekler ayrı tablolarda olsa dahi şu şekilde birleştirebilirsiniz:

SELECT * FROM sorular
INNER JOIN secenekler 
ON sorular.soru_id = secenekler.soru_id;

Ama en mantıklı olan ise sorular ve cevapları tek bir tabloda tutmak.

CREATE TABLE sorular
(
	soru_id INTEGER UNSIGNED AUTO_INCREMENT NOT NULL,
	sinav_id INTEGER UNSIGNED NOT NULL,
	soru_baslik VARCHAR(100),
	soru_icerik VARCHAR(260),
	soru_resim VARCHAR(260),
	soru_durum INTEGER UNSIGNED,
	secenek_dogru INTEGER UNSIGNED,
	secenek_1 VARCHAR(50),
	secenek_2 VARCHAR(50),
	secenek_3 VARCHAR(50),
	secenek_4 VARCHAR(50),
	secenek_5 VARCHAR(50),
	PRIMARY KEY (soru_id)
);

INSERT INTO sorular VALUES (NULL, 1, 1, 'Aşağıdaki...', '', '', 0, 3, 'Birinci ..', 'İkinci ...');

Bu sayede her sınav için tek bir SELECT sorgusuyla hızlı bir şekilde sorulara ulaşabilirsiniz:

SELECT * FROM sorular WHERE sinav_id = 1

 

Teşekkür ederim

UNION ALL komutunu kullanarak da iki tabloyu tek bir select ile çekebilirsiniz. Her sutünün datatype ı aynı olacak ama. birinci tablonun birinci sutunu int ise 2. tablonun 1. sutunu da int olacak şekilde.

Cevap Yaz

Cevap yazabilmek için üye girişi yapmanız gerekiyor!

Yukarı Git