Archief - MYSQL: gelijke rijen selecteren

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

EyeBallz

Legacy Member
hallo,
ik heb een tabel 'test':
Code:
tabel test:

kolom_1		kolom_2		kolom_3		kolom_4		kolom_5
1		1		1		2		3
1		1		2		2		1
1		1		1		2		4
1		1		2		7		1
1		2		1		5		3
nu is het de bedoeling dat ik rijen waar kolom 1,2,3,4 gelijk zijn selecteer (rij 1 en 3 dus),
en in een tweede query de rijen waar kolom 1,2,3,5 gelijk zijn ook selecteer (in het voorbeeld rij 2 en 4).
hoe doe ik dat?
bedankt!

frenzal

Legacy Member
SELECT * FROM test WHERE (kolom_1 = kolom_2 AND kolom_2=kolom_3 AND kolom_3 = kolom_4) OR (kolom_1 = kolom_2 AND kolom_2=kolom_3 AND kolom_3 = kolom_5)

is het eerste wat mij binnenspringt, weet niet of hier misschien een leuk SQL truukje voor bestaat om dat mooier op te lossen.

edit: denk dat ik u verkeerd begrepen hebt want je bedoeld echt verticaal gelijk binnen 1 kolom? Dus waar rij 1,2,3,4 gelijk zijn van kolom_1? Anders klopt uw voorbeeld niet.

Radiance

Legacy Member
Hij bedoelt gewoon 2 aparte queries denk ik.
Dus

SELECT * FROM test WHERE kolom_1 = kolom_2 AND kolom_2=kolom_3 AND kolom_3 = kolom_4;

en

SELECT * FROM test WHERE kolom_1 = kolom_2 AND kolom_2=kolom_3 AND kolom_3 = kolom_5;

EyeBallz

Legacy Member
het is niet dat wat ik zoek
het kan bvb ook zo zijn:
Code:
tabel test:

kolom_1		kolom_2		kolom_3		kolom_4		kolom_5
a		b		c		d		e
a		b		c		d		z
g		t		p		s		k
g		t		p		z		k
nu zoek ik idd 2 queries:
een die alle rijen teruggeeft waar de combinatie kolom 1,2,3,4 gelijk is (in het vb rij 1 en 2);
en een andere query die de rijen teruggeeft waarbij de combinatie van kolom 1,2,3,5 gelijk is (rijen 3 en 4 in het vb)
bedankt!

daVinci

Legacy Member
dan moet je zeker met een COUNT gaan werken in je SQL statement.

orez

Legacy Member
@TS ... Geef AUB eens meer uitleg, wil je dat hij de rijen telt, dat hij ze toont, dat hij....

Leg ook eens de toepassing uit, want het ziet er allemaal wat wazig uit hoor.

dJeez

Legacy Member
Zeg EyeBallz, ofwel klopt je uitleg niet - want als die klopt dan is de oplossing die Radiance geeft een correcte oplossing - ofwel moet je idd eens duidelijk uitleggen wat je nodig hebt.

@daVinci: Als hij alle rijen nodig heeft (en dat is wat hij zegt) dan heeft hij geen count nodig, want die gaat enkel het aantal rijen teruggeven (een beduidend verschil).

EyeBallz

Legacy Member
OK,

dit is de vorm van de concrete applicatie (het is een soort kalendersysteem):
ik heb een tabel die een Week, Weekdag, Uur, Persoon en Bureau bijhoudt.
Week houdt de week van het jaar bij (1->52),
Week houdt de dag van de week bij (1->5),
Uur houdt het uur van de dag bij (1->8 (8 werkuren per dag)),
Persoon houdt een ID bij, die refereert naar een andere tabel waar de naam van die persoon inzit,
Bureau houdt ook een ID bij, die refereert naar een andere tabel waar de capaciteit (en dergelijke) van het bureau inzit,

dit is nu het probleem met mijn tabel:
het is mogelijk om 'verkeerde' entries in te geven.
hier een vb van 'verkeerde' entries:
Code:
Week		Weekdag		Uur		Persoon		Lokaal
1		2		3		31		5
1		2		3		31		9
1		2		3		22		5

rij 1 en 2 conflicteren aangezien een persoon zich niet op hetzelfde moment in 2 bureaus kan bevinden.
rij 2 en 3 conflicteren ook aangezien een lokaal niet tegelijk bezet kan zijn door 2 verschillende personen.

de oplossing?
2 queries:
1 die de lokalenconflicten weergeeft (enkel weergeven, dus met een select, de delete gebeurd op een andere pagina)
1 die de personenconflicten weergeeft.

sorry voor de verwarrende uitleg van hierboven, en bedankt aan zij die mij willen verderhelpen, want ik heb vind er echt geen oplossing voor.
bedankt!!

AncientRites

Legacy Member
Volgens mij moet het zo wel lukken (voor personenconflict):

Code:
SELECT * FROM 
(SELECT COUNT(Lokaal) AS Overlapping, Persoon
FROM test
GROUP BY Week, Weekdag, Uur, Persoon) AS t01
WHERE t01.Overlapping > 1

Lokalenconflict valt op dezelfde manier op te halen.

(Maar kan je niet zorgen dat in eerste instantie lokalen en personen niet dubbel toegewezen worden?)

EyeBallz

Legacy Member
hij geeft mij nu inderdaad de ogenblikken waarop een persoon 2x (of meer) tegelijk ergens moet zijn, maar hij geeft maar een van de ogenblikken waarop dit gebeurd.
hoe kan hij alle ogenblikken weergeven?
alvast bedankt voor deze query! sta ik al een serieuze stap vooruit mee!
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan