1 overeenkomstige tabel uit 4 tabellen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

John de Boer

John de Boer

22/08/2006 15:17:00
Quote Anchor link
Ik heb 4 tabellen in mijn db:

CREATE TABLE `acteurs` (
`pkActeurID` bigint(21) unsigned NOT NULL auto_increment,
`Naam` varchar(255) NOT NULL default 'NULL',
`Achternaam` varchar(255) NOT NULL default 'NULL',
`Voornaam` varchar(255) NOT NULL default 'NULL',
`Geboortenaam` varchar(255) NOT NULL default 'NULL',
`AKA` varchar(255) default NULL,
`Geslacht` enum('m','v','f','man','vrouw','male','female') default NULL,
`Geboortedatum` date default '0000-00-00',
`Geboorteplaats` varchar(255) default 'NULL',
`Overleden` date default '0000-00-00',
`Foto` longblob,
`IMDb_link` varchar(255) default 'NULL',
`gegevens_nodig` enum('yes','no','0','1') default 'no',
`opmerkingen` varchar(255) default NULL,
PRIMARY KEY (`pkActeurID`),
FULLTEXT KEY `acteur`(`Naam`)
) TYPE=MyISAM;

CREATE TABLE `muziek` (
`pkMuziekID` bigint(21) unsigned NOT NULL auto_increment,
`Naam` varchar(255) NOT NULL default 'NULL',
`Achternaam` varchar(255) NOT NULL default 'NULL',
`Voornaam` varchar(255) NOT NULL default 'NULL',
`Geboortenaam` varchar(255) NOT NULL default 'NULL',
`AKA` varchar(255) default NULL,
`Geslacht` enum('m','v','f','man','vrouw','male','female') default NULL,
`Geboortedatum` date default '0000-00-00',
`Geboorteplaats` varchar(255) default 'NULL',
`Overleden` date default '0000-00-00',
`Foto` longblob,
`IMDb_link` varchar(255) default 'NULL',
`gegevens_nodig` enum('yes','no','0','1') default 'no',
`opmerkingen` varchar(255) default NULL,
PRIMARY KEY (`pkMuziekID`),
FULLTEXT KEY `muzikant`(`Naam`)
) TYPE=MyISAM;

CREATE TABLE `regisseur` (
`pkRegisseurID` bigint(21) unsigned NOT NULL auto_increment,
`Naam` varchar(255) NOT NULL default 'NULL',
`Achternaam` varchar(255) NOT NULL default 'NULL',
`Voornaam` varchar(255) NOT NULL default 'NULL',
`Geboortenaam` varchar(255) NOT NULL default 'NULL',
`AKA` varchar(255) default NULL,
`Geslacht` enum('m','v','f','man','vrouw','male','female') default NULL,
`Geboortedatum` date default '0000-00-00',
`Geboorteplaats` varchar(255) default 'NULL',
`Overleden` date default '0000-00-00',
`Foto` longblob,
`IMDb_link` varchar(255) default 'NULL',
`gegevens_nodig` enum('yes','no','0','1') default 'no',
`opmerkingen` varchar(255) default NULL,
PRIMARY KEY (`pkRegisseurID`),
FULLTEXT KEY `regisseur`(`Naam`)
) TYPE=MyISAM;

CREATE TABLE `verhaal` (
`pkAuteurID` bigint(21) unsigned NOT NULL auto_increment,
`Naam` varchar(255) NOT NULL default 'NULL',
`Achternaam` varchar(255) NOT NULL default 'NULL',
`Voornaam` varchar(255) NOT NULL default 'NULL',
`Geboortenaam` varchar(255) NOT NULL default 'NULL',
`AKA` varchar(255) default NULL,
`Geslacht` enum('m','v','f','man','vrouw','male','female') default NULL,
`Geboortedatum` date default '0000-00-00',
`Geboorteplaats` varchar(255) default 'NULL',
`Overleden` date default '0000-00-00',
`Foto` longblob,
`IMDb_link` varchar(255) default 'NULL',
`gegevens_nodig` enum('yes','no','0','1') default 'no',
`opmerkingen` varchar(255) default NULL,
PRIMARY KEY (`pkAuteurID`),
FULLTEXT KEY `auteur`(`Naam`)
) TYPE=MyISAM;

nu is het de bedoeling dat ik de velden `Naam` en `Overleden` van deze 4 tabellen gebruik en een overzicht krijg van alle personen die overleden zijn, ongecaht acteur, muzikant, regisseur of auteur (verhaal). het liefst ook gesorteerd op overlijdensdatum, dus laatste bovenaan
(ORDER BY Overleden DESC)

Ik heb zelf al zitten worstelen met allerlei queries maar kom er niet uit.

Wie helpt mij uit de brand?
 
PHP hulp

PHP hulp

21/11/2024 16:32:25
 
John de Boer

John de Boer

28/08/2006 00:30:00
Quote Anchor link
*bump*

wat wordt er eigenlijk met bumpen bedoeld?
 
Terence Hersbach

Terence Hersbach

28/08/2006 00:59:00
Quote Anchor link
bumpen is je topic weer in het lijstje links op deze site weer tevoorschijn toveren zodat je meer aandacht krijgt ;)

(ps. dit mag pas na 24 uur.. niet eerder..)

edit:
k heb overigens geen verstand van relaties in databases met mysql.. dus k kan je helaas niet verder helpen
Gewijzigd op 01/01/1970 01:00:00 door Terence Hersbach
 
Steven dirickx

steven dirickx

28/08/2006 09:37:00
Quote Anchor link
Terence:
bumpen is je topic weer in het lijstje links op deze site weer tevoorschijn toveren zodat je meer aandacht krijgt ;)

(ps. dit mag pas na 24 uur.. niet eerder..)

edit:
k heb overigens geen verstand van relaties in databases met mysql.. dus k kan je helaas niet verder helpen



Als ik denk je te verstaan ...
dan kan je proberen ieder gegeven een id te geven ...

als een gegeven gevraagt is dat de rest met dezelfde id mee komt ...

Of bedoel je iets anders?


mgv,
Steven
 
Klaasjan Boven

Klaasjan Boven

28/08/2006 09:59:00
Quote Anchor link
Dit heeft nix met relaties te maken.

SELECT
a.naam, a.overleden,
b.naam, b.overleden,
FROM
acteurs AS a,
regisseur AS b
ORDER BY
a.overleden, b.overleden ASC

Volgens mij moet dat het al zijn anders snap ik je vraag niet.
Gewijzigd op 01/01/1970 01:00:00 door Klaasjan Boven
 
John de Boer

John de Boer

28/08/2006 20:43:00
Quote Anchor link
ten 1, bedankt voor jullie reaktie / meedenken.

en het is de bedoeling dat ik uit die 4 tabellen
acteurs, regisseur, muziek, verhaal
de overleden personen in 1 tabel krijg.
dus de overleden acteurs, regisseurs etc.

@klaasjan
je query komt aardig overeen maar mist nog 2 tabellen.
Ik kom tot de volgende (access-)query:

SELECT a.Naam, a.Overleden, r.Naam, r.Overleden, m.Naam, m.Overleden, v.Naam, v.Overleden
FROM Acteurs AS a, Regisseur AS r, Muziek AS m, Verhaal AS v
WHERE (((a.Overleden) Is Not Null) AND ((r.Overleden) Is Not Null) AND ((m.Overleden) Is Not Null) AND ((v.Overleden) Is Not Null))
ORDER BY a.Overleden, r.Overleden, m.Overleden, v.Overleden;


maar die is het nog niet helemaal...
het duurt nogal voor hij de query heeft uitgevoert.
Gewijzigd op 01/01/1970 01:00:00 door John de Boer
 
Klaasjan Boven

Klaasjan Boven

28/08/2006 21:01:00
Quote Anchor link
SELECT
a.Naam,
a.Overleden,
r.Naam,
r.Overleden,
m.Naam,
m.Overleden,
v.Naam,
v.Overleden
FROM
acteurs AS a
regissuers AS r
muziek AS m
verhaal AS v
WHERE
a.overleden<>""
AND
r.overleden <>""
AND
m.overleden<>""
AND
v.overleden<>""

Zoiets?
 
Klaasjan Boven

Klaasjan Boven

28/08/2006 21:04:00
Quote Anchor link
Ik mis trouwens de verbanden tusseen de gegevens, oftewel ik snap niet waarom je dit wilt.
 
John de Boer

John de Boer

28/08/2006 21:33:00
Quote Anchor link
Ik ben me wat aan het verdiepen in SQL en of mijn db ook genormaliseerd is. En ik denk ook dat ik mijn voordeel er mee kan doen bij het schrijven van php-scripts.

Ik had dit topic ook gepost bij phpfreakz.nl en die vertelden mij dat ik beter de 4 tabellen kon verwijderen en dan het volgende doen:

CREATE TABLE `personen` (
`pkPersoonID` bigint(21) unsigned NOT NULL auto_increment,
`Naam` varchar(255) NOT NULL default '',
`Achternaam` varchar(255) NOT NULL default '',
`Voornaam` varchar(255) NOT NULL default '',
`Geboortenaam` varchar(255) NOT NULL default '',
`AKA` varchar(255) NOT NULL default '',
`Geslacht` enum('man','vrouw') default NULL,
`Geboortedatum` date default NULL,
`Geboorteplaats` varchar(255) default NULL,
`Overleden` date default NULL,
`Foto` varchar(255) default NULL,
`IMDb_link` varchar(255) default NULL,
`gegevens_nodig` enum('0','1') default NULL,
`opmerkingen` varchar(255) default NULL,
`categorie` bigint(21) unsigned default NULL,
PRIMARY KEY (`pkPersoonID`)
) TYPE=MyISAM;

CREATE TABLE `rol` (
`pkRolID` tinyint(3) unsigned NOT NULL auto_increment,
`rol` varchar(255) NOT NULL default '',
PRIMARY KEY (`pkRolID`)
) TYPE=MyISAM;

INSERT INTO `rol` (`pkRolID`, `rol`) VALUES("1", "Acteur");
INSERT INTO `rol` (`pkRolID`, `rol`) VALUES("2", "Regisseur");
INSERT INTO `rol` (`pkRolID`, `rol`) VALUES("3", "Auteur");
INSERT INTO `rol` (`pkRolID`, `rol`) VALUES("4", "Muziek");

en

CREATE TABLE `persoon_rol_link` (
`pkRolLinkID` bigint(21) unsigned NOT NULL auto_increment,
PRIMARY KEY (`pkRolLinkID`)
) TYPE=MyISAM;

maar ik weet niet hoe ik tabellen link in (My)SQL.
Gewijzigd op 01/01/1970 01:00:00 door John de Boer
 
Jan Koehoorn

Jan Koehoorn

28/08/2006 21:39:00
Quote Anchor link
Ja dit datamodel klopt van geen kanten. Je hebt allerlei velden dubbel in vier tabellen. Zoals het nu is, is je DB zeker niet genormaliseerd. Laat deze idiote query eens op je DB los? Misschien werkt hij wel
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
(SELECT Naam, Overleden
FROM acteurs)
UNION
(SELECT Naam, Overleden
FROM muziek)
UNION
(SELECT Naam, Overleden
FROM regisseur)
UNION
(SELECT Naam, Overleden
FROM verhaal)

Edit:

Mocht hij toevallig werken, dan raad ik je nog steeds een ander datamodel aan
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
 
John de Boer

John de Boer

28/08/2006 21:52:00
Quote Anchor link
Ik ga denk ik idd toch maar overstappen op een ander model, zoals ik hierboven al beschreef, met de 3 tabellen `personen`, `rol` en `persoon_rol_link`

ik zet dan alle acteurs, regisseurs, auteurs en muzikanten in de tabel `personen` en link dan in de tabel `persoon_rol_link` de personen of ze acteur, regisseur, auteur of muzikant zijn.

zal ik zelf nog ff moeten uitzoeken hoe ik de tabellen `personen` en `rol` link in de tabel `persoon_rol_link.`
Gewijzigd op 01/01/1970 01:00:00 door John de Boer
 
Klaasjan Boven

Klaasjan Boven

29/08/2006 08:53:00
Quote Anchor link
Lijkt me een prima idee
 
John de Boer

John de Boer

29/08/2006 21:49:00
Quote Anchor link
Ok, in elk geval bedankt voor jullie input.

maar weet 1 van jullie toevallig hoe ik een tabel link in MySQL?
heb al zitten googlen...
Gewijzigd op 01/01/1970 01:00:00 door John de Boer
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.