MySQL breinbrekert
Ik heb 2 tabellen , die zien er als volgt uit
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
emailadressen
id | emailadres | cat1 | cat2 | cat3 | cat4
--------------------------------------------
1 | [email protected] | 1 | 1 | 0 | 1
2 | [email protected] | 0 | 1 | 1 | 0
3 | [email protected] | 1 | 0 | 1 | 1
4 | [email protected] | 1 | 1 | 0 | 0
categorie
id | naam
----------------
1 | Algemeen
2 | Bestuur
3 | Beheer
4 | Overig
id | emailadres | cat1 | cat2 | cat3 | cat4
--------------------------------------------
1 | [email protected] | 1 | 1 | 0 | 1
2 | [email protected] | 0 | 1 | 1 | 0
3 | [email protected] | 1 | 0 | 1 | 1
4 | [email protected] | 1 | 1 | 0 | 0
categorie
id | naam
----------------
1 | Algemeen
2 | Bestuur
3 | Beheer
4 | Overig
Wat wil ik zien?
Uit emailadressen het id, emailadres en de namen van de categorien waar een 1 instaat.
Hoe doe ik dit in SQL, ik wordt er redelijk gestoord van. :) meer dan ik al was.
wes:
ik wordt er redelijk gestoord van. :) meer dan ik al was.
Is dat dan nog mogelijk? ;) Lol
Ik denk dat Frank hier vast een goed antwoord op heeft. Ik zelf denk namelijk dat het datamodel niet geheel is 'genormaliseerd'.
Ohja, voor het geval frank reageerd, ik ga / kan / mag / moet geen aanpassingen doen op databaseniveau. Ik wil puur een query uitpoepen
volgens mij had het moeten zijn.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
email
id | email
-----------
1 | [email protected]
2 | [email protected]
cat1
email_id | aan| categorie_naam
------------------------------------
1 | 0 | 2
2 | 1 | 3
cat2
email_id | aan| categorie_naam
------------------------------------
1 | 0 | 2
2 | 1 | 3
categorie_namen
id | email
-----------
1 | [email protected]
2 | [email protected]
cat1
email_id | aan| categorie_naam
------------------------------------
1 | 0 | 2
2 | 1 | 3
cat2
email_id | aan| categorie_naam
------------------------------------
1 | 0 | 2
2 | 1 | 3
categorie_namen
enz.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
SELECT a.id,a,email,a,cat1,b.cat2,c.cat3
FROM emailadressen AS a,
emailadressen AS b,
emailadressen AS c,
WHERE
a.id=b.id
AND
a.id=c.id
AND
a.cat1<>0
AND
b.cat2<>0
AND
c.cat3<>0
FROM emailadressen AS a,
emailadressen AS b,
emailadressen AS c,
WHERE
a.id=b.id
AND
a.id=c.id
AND
a.cat1<>0
AND
b.cat2<>0
AND
c.cat3<>0
zoiets
ik neem aan dat jezelf de naam er wel aan krijgt
Gewijzigd op 01/01/1970 01:00:00 door Klaasjan Boven
Je hebt een koppeltabel nodig waarmee je een email_id koppelt aan 0 of meer categorieën
Remco:
Dat was al vastgesteld nu de oplossing nog. Zie WES zijn post
wes:
Ik had eigenlijk niet willen reageren omdat Klaasjan de boodschap al had overgebracht, maar doe het nu toch even.Ohja, voor het geval frank reageerd, ik ga / kan / mag / moet geen aanpassingen doen op databaseniveau. Ik wil puur een query uitpoepen
Vraagje: Waarom kan en mag je geen goed datamodel maken? Dat is de basis van een goed systeem. Je bent nu dus een beroerd systeem aan het maken, eerste problemen doemen nu al op, dat straks niet fatsoenlijk is te onderhouden. Het hangt dan van de workarounds aan elkaar en kan dan ook zo maar eens inelkaar storten wanneer er een bug in blijkt te zittten. En laat dat bij software nog wel eens het geval zijn...
@klaasjan volgens mij is dat wel een goede richting, ik probeer wel ff wat :)
POst hem even als je het voor elkaar krijgt
@frank, ik post hier al een stukje langer dan de meesten en zal niet zomaar 'ik kan dit niet aanpassen' ergens inzetten. Dat heeft dus een reden. In dit geval heeft het met ex en import van gegevens te maken waar ik niets verder aan kan doen. Reageer dan niet
Jij stelt een vraag en zou daar graag een antwood op hebben en ik kan me zo voorstellen dat je zit niet te wachten op al die (al dan niet goedbedoelde) waardeoordelen. Sterker nog je geeft het al aan... in het begin van je toppic.
Waarom dan toch krijgen???
@Lissy en @Wes: Een korte reden geven waarom 'ik ga / kan / mag / moet geen aanpassingen doen op databaseniveau' zou veel irritatie voorkomen. Nu lijkt het er veel op dat de 'wil om het goed te doen' niet aanwezig is.
@lissy snowcone!
wes:
<bord_voor_mijn_kop_modus>Wat heeft de in- en export van gegevens nu met het datamodel te maken? Bij mijn weten helemaal niets. Je ontvangt data in een bepaald formaat en vervolgens ga jij dat op de juiste manier in de database zetten. Wanneer het formaat wijzigt, zul je alleen de import-module moeten aanpassen, niet het datamodel. @frank, ik post hier al een stukje langer dan de meesten en zal niet zomaar 'ik kan dit niet aanpassen' ergens inzetten. Dat heeft dus een reden. In dit geval heeft het met ex en import van gegevens te maken waar ik niets verder aan kan doen. Reageer dan niet
Dit geldt ook voor de export van gegevens, de enige vraag die je daarbij hebt, is hoe je geexporteerd wilt hebben. Heeft wederom helemaal niets met het datamodel te maken.
Kortom, ga het datamodel aanpassen! Je hebt niet 1 argument om het niet te doen.
</bord_voor_mijn_kop_modus>
Gewijzigd op 01/01/1970 01:00:00 door - wes -
Quote:
Geen enkel probleem hoor, dan mag je het zelf gaan uitzoeken. Jammer dat je zo vreselijk eigenwijs bent, dat kost je zo te lezen een hoop frustratie en tijd (om problemen op te lossen). Veel succes.kan je nou gewoon of niet posten of iets posten waar ik iets mee kan
Ben je nou gewoon een blinde of doe je net alsof?
Wes, ik denk eigenlijk dat het niet mogelijk is. Of met een zeer uitgebreide WHERE icm CASE, maar zelfs daar heb ik mijn twijfels over.
ja dan krijg ik dus 10 int kwadraat mogelijkheden voor mn case dat word ook niet wat denk ik
Wat je eventueel nog zou kunnen doen (ja, dit is de easy&dirty way) is alle regels die je nodig hebt uit de tabel met emailadressen halen, vervolgens bij het verwerken van die gegevens een aparte array maken voor alle categorienamen die voorkomen (die dus een 1 hebben ergens) en die dan bij de 2e query eruit halen. Dan heb je beiden gegevens in je script en kan je ze verder vrij gemakkelijk samenvoegen.