Hoe lees en schrijf ik in een genormaliseerde database.

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: « vorige 1 2

Erwin H

Erwin H

03/03/2012 21:44:03
Quote Anchor link
Wat het opvragen betreft, op zich doe je het niet fout. Maar, als je toch bezig bent om dit te leren zou ik je willen adviseren meteen te leren hoe je expliciete joins maakt via de JOIN keywords. Dus niet gewoon alle kolommen selecteren uit alle tabellen, maar tabellen in de juiste volgorde joinen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
SELECT
 hoofdindex.id
 a.a1
 b.b1
 c.c1
FROM
 hoofdindex
JOIN a ON hoofdindex.a_id = a.id
JOIN b ON hoofdindex.b_id = b.id
JOIN c ON hoofdindex.c_id = b_id
WHERE
 hoofdindex.id = 1;

Zo heb je meer controle over hoe de joins tot stand komen (door op een juiste manier gebruik te maken van INNER JOIN, LEFT JOIN, OUTER JOIN etc), je query wordt veel ovrzichtelijker doordat je de join voorwaarden niet in je WHERE clause nodig hebt en het schijnt ook sneller te zijn.
Mee info, zie de link die naar de tutorial die ik eerder al plaatste.
Gewijzigd op 03/03/2012 21:44:31 door Erwin H
 
PHP hulp

PHP hulp

25/04/2024 22:21:14
 
Koos jansen

koos jansen

03/03/2012 22:13:35
Quote Anchor link
Zolang deze methode toereikend is hou ik het vooralsnog hierbij. Dit database gebeuren is een behoorlijke drempel tussen mij en de verdere ontwikkeling van mijn innovatie, dus des te sneller ik hem in gebruik kan nemen in plaats er aan te moeten sleutelen, des te beter.


Wat betreft het schrijven weet ik het denk ik al (al kan ik dat morgen pas testen want vandaag geen puf meer voor ;) maar volgens mij wordt het dan zoiets als dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
$query1 = "INSERT INTO a VALUES (
'',
'$a1',
'$a2'
)";
mysql_query($query1);

$query="SELECT * FROM a";
$result=mysql_query($query);
$a_id=mysql_numrows($result);
mysql_close();

$query2 = "INSERT INTO b VALUES (
'',
'$b1',
'$b2'
)";
mysql_query($query2);

$query="SELECT * FROM b";
$result=mysql_query($query);
$b_id=mysql_numrows($result);
mysql_close();

$query3 = "INSERT INTO c VALUES (
'',
'$c1',
'$c2'
)";
mysql_query($query3);

$query="SELECT * FROM c";
$result=mysql_query($query);
$c_id=mysql_numrows($result);
mysql_close();


$query4 = "INSERT INTO hoofdindex VALUES (
'',
'$a_id',
'$b_id',
'$c_id'
)";
mysql_query($query3);
 
Erwin H

Erwin H

03/03/2012 22:21:51
Quote Anchor link
Zal ik je nog een tip geven die je waarschijnlijk in de wind zult slaan:
benoem altijd alle kolommen in een insert statement. Dit zorgt voor een robustere query en geeft je de mogelijkheid kolommen niet mee te nemen in een insert. Als je geen kolommen benoemt zal je namelijk alle kolommen een waarde moeten geven en in de volgorde zoals ze zijn gedefinieerd in je table create statement. Vergeet je er een, of draai je er twee om dan gaat je query onderuit. Dus ook als je later nog eens een kolom toevoegt en die niet opneemt in je insert query. Als je alle kolommen gewoon benoemt heb je van al dat geen last en kan je kolommen in een willekeurige volgorde opnemen. Dus:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
INSERT a (kolom_a1, kolom_a3, kolom_6, kolom_a2)
VALUES( 'iets', 'iets anders', 'nog iets', 3);

En natuurlijk variabelen buiten quotes, maar dat wist je vast al lang.
 
Koos jansen

koos jansen

03/03/2012 22:33:41
Quote Anchor link
een compleet alternatieve methode op iets wat werkt en ik nu net een beetje begrijp, terwijl ik het allemaal nog maar wat frustrerend vind, en eigenlijk met heel iets anders verder wil, heeft weinig te maken met advies in de wind slaan.
Dat wat je zegt met het benoemen van kolommen klinkt best zinnig en zal ik zeker doen. De structuur die ik hanteer heb ik ergens eens gecopy /paste en weet er dus niet de voor of nadelen van, en dus ook niet dat
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
'$a_id',
'$b_id',
'$c_id'

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
$a_id,
$b_id,
$c_id

moet zijn? of bedoelde je dat niet met je laatste regel? Naja.. ik test het morgen wel. Nu eerst maar eens pitten(en bedankt voor je moeite me toch wat bij proberen te brengen) :D

Toevoeging op 04/03/2012 10:09:52:

het gaat me niet lukken, helaas.
opgegeven.
 

Pagina: « vorige 1 2



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.