abonnement Unibet Coolblue
pi_73140496
quote:
Op vrijdag 25 september 2009 23:20 schreef Light het volgende:
Nu is regel 14 fout.
Regel 14:
1
2
3
<?php
$queryget 
mysql_query'SELECT * FROM gastenboek')or die("query error"));
?>


Mist een ) in het bold toe gevoegd als hij die code in php pakt :)

mysql_query( ' ') or die ("mysql_error());
zoek eens op php naar een fout afhandeling.
handiger is een $sql variabele te maken en die in een mysql_query($sql); te stoppen zodat als je variabelen gebruikt in je sql die kan outputten met een echo om je sql fout te vinden.
Redacted
pi_73141828
quote:
Op zondag 27 september 2009 02:20 schreef cablegunmaster het volgende:

Mist een ) in het bold toe gevoegd als hij die code in php pakt
Nee, er staan precies genoeg haakjes, alleen niet op de juiste plek.
quote:
mysql_query( ' ') or die ("mysql_error());
Nu staat er een ) te veel.
quote:
zoek eens op php naar een fout afhandeling.
handiger is een $sql variabele te maken en die in een mysql_query($sql); te stoppen zodat als je variabelen gebruikt in je sql die kan outputten met een echo om je sql fout te vinden.
pi_73157683
ik heb het gewoon overnieuw getypt en nu doet hij wel.
ik weet alleen niet wat er mis was,
toch bedankt mensen.
Lekker happen
pi_73280145
SELECT * FROM gallery WHERE views=MAX(views)

Hoe doe ik dat? , ik wil dus 't element met 't grootst aantal views hebben.

oh btw ik wil niet horen dat ik dus

SELECT * FROM gallery ORDER BY views DESC LIMIT 1

ofzo
pi_73280239
SELECT MAX(views) FROM gallery ?
pi_73280421
quote:
Op donderdag 1 oktober 2009 17:41 schreef Xcalibur het volgende:
SELECT MAX(views) FROM gallery ?
Nah want die resultaat (hoeft) correnspondeert dan niet met de andere geselecteerde rijen
pi_73284596
quote:
Op donderdag 1 oktober 2009 17:37 schreef ReWout het volgende:
SELECT * FROM gallery WHERE views=MAX(views)

Hoe doe ik dat? :s), ik wil dus 't element met 't grootst aantal views hebben.
Zoiets?
1SELECT * FROM gallery WHERE views= (SELECT MAX(views) FROM gallery)
quote:
oh btw ik wil niet horen dat ik dus

SELECT * FROM gallery ORDER BY views DESC LIMIT 1

ofzo :P
Waarom niet? Dat werkt wel, en 't is een stuk minder omslachtig :)
pi_73285679
quote:
Op donderdag 1 oktober 2009 17:48 schreef ReWout het volgende:

[..]

Nah want die resultaat (hoeft) correnspondeert dan niet met de andere geselecteerde rijen
Ik geloof niet dat ik snap wat je zegt....
pi_73296046
De query gaat over 2 tabellen...

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
Tabel 1:
id naam
1 Abc
2 Bcd
3 Cde
4 Def

Tabel 2:
id id_tabel1 uitgave_nummer versie_nummer
1 1 1 a
2 1 1 b
3 1 1 c
4 1 2 a
5 1 3 a
6 2 1 a
7 2 1 b
8 3 1 a
9 3 1 b
10 3 2 a
11 4 1 a
12 4 2 a
13 4 3 a
14 4 4 a
15 4 4 b
16 4 4 c 


Nu wil ik alleen diegene selecteren uit tabel1 waarbij de uitgave_nummer nummer 't grootst is en vervolgens ook 't versie_nummer het grootste is...

Bijvoorbeeld de resultaat van me query moet zijn

id naam uitgave versie
1 Abc 3 a
2 Bcd 1 b
3 Cde 2 a
4 Def 4 c
pi_73296103
quote:
Op vrijdag 2 oktober 2009 07:22 schreef ReWout het volgende:
De query gaat over 2 tabellen...
[ code verwijderd ]

Nu wil ik alleen diegene selecteren uit tabel1 waarbij de uitgave_nummer nummer 't grootst is en vervolgens ook 't versie_nummer het grootste is...

Bijvoorbeeld de resultaat van me query moet zijn

id naam uitgave versie
1 Abc 3 a
2 Bcd 1 b
3 Cde 2 a
4 Def 4 c
Is dat een nieuw probleem of nog steeds hetzelfde probleem? In het laatste geval, hoe hadden we moeten weten dat je query over 2 tabellen gaat?
pi_73296293
quote:
Op vrijdag 2 oktober 2009 07:33 schreef Light het volgende:

[..]

Is dat een nieuw probleem of nog steeds hetzelfde probleem? In het laatste geval, hoe hadden we moeten weten dat je query over 2 tabellen gaat?
Hetzelfde probleem en je hebt gelijk had ik moeten vermelden maar ik dacht dat 't toch niet zoveel uitmaakte omdat ik dus inprincipe dus gewoon een WHERE clause maximum nodig heb waardoor ik dus alleen de hoogste uitgave/versie eruit haal
pi_73296896
Dan zou ik lekker op uitgave en versie sorteren en het eerste record pakken
Voor je oorspronkelijke probleem blijft mijn query prima volgens mij
pi_73297476
quote:
Op vrijdag 2 oktober 2009 08:59 schreef Xcalibur het volgende:
Dan zou ik lekker op uitgave en versie sorteren en het eerste record pakken
Voor je oorspronkelijke probleem blijft mijn query prima volgens mij
Nee helaas niet want...

Want want hij selecteert dan de grootste waarde die hij kan vinden uit uitgave en uit versie...

Dus bijvoorbeeld ik heb de volgende data
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
Tabel 1:
id naam
1 Abc
2 Bcd
3 Cde
4 Def

Tabel 2:
id id_tabel1 uitgave_nummer versie_nummer
1 1 1 a
2 1 1 b
3 1 1 c
4 1 2 a
5 1 3 a
6 2 1 a
7 2 1 b
8 3 1 a
9 3 1 b
10 3 2 a
11 4 1 a
12 4 2 a
13 4 3 a
14 4 4 a
15 4 4 b
16 4 4 c
17 4 5 a


Dan retouneert de query

1
2
3
4
5
6
7
8
9
SELECT
   n.[id], 
   n.[titel], 
   MAX(m.[uitgave]) AS [uitgave],
   MAX(m.[versie]) AS [versie]
FROM [tabel1] AS n
LEFT JOIN [tabel2] AS m
   ON m.[id_tabel1] = n.[id]
   GROUP BY n.[id], n.[titel]


't volgende resultaat

1 Abc 3 a
2 Bcd 1 b
3 Cde 2 a
4 Def 5 c

Hij moet natuurlijk dan
4 Def 5 a
retouneren

dit bedoelde ik eigenlijk toen ik 't volgende zei
quote:
Op donderdag 1 oktober 2009 17:48 schreef ReWout het volgende:

[..]

Nah want die resultaat (hoeft) correnspondeert dan niet met de andere geselecteerde rijen
Wanneer ik dan MAX(m.[Versie]) wegdoe (en toevoeg bij GROUP BY anders error) dan krijg je weer dubbele resultaten
1 Abc 3 a
2 Bcd 1 a
3 Bcd 1 b
4 Def 2 a
4 Bcd 5 a

[ Bericht 2% gewijzigd door ReWout op 02-10-2009 09:52:33 ]
pi_73299269
SELECT tabel2.uitgave_nummer,tabel1.naam,tabel2.versie_nummer
FROM tabel2
LEFT JOIN tabel1 ON
tabel1.id = tabel2.id_tabel1
WHERE tabel2.uitgave_nummer = max(uitgave_nummer)
AND tabel2.versie_nummer = max(versie_nummer)

zoiets ? weet niet of alle velden kloppen maar het idee is dat hij de naam pakt en het uitgave nummer en de versienummer en daarvan de laatste pakt.

dus de maximale waarde in uitgave nummer en waar ook de grootste waarde in versienummer staat
Redacted
pi_73299707
quote:
Op vrijdag 2 oktober 2009 10:47 schreef cablegunmaster het volgende:
SELECT tabel2.uitgave_nummer,tabel1.naam,tabel2.versie_nummer
FROM tabel2
LEFT JOIN tabel1 ON
tabel1.id = tabel2.id_tabel1
WHERE tabel2.uitgave_nummer = max(uitgave_nummer)
AND tabel2.versie_nummer = max(versie_nummer)

zoiets ? weet niet of alle velden kloppen maar het idee is dat hij de naam pakt en het uitgave nummer en de versienummer en daarvan de laatste pakt.

dus de maximale waarde in uitgave nummer en waar ook de grootste waarde in versienummer staat
Die query zou ikzelf ook logisch vinden, maar helaas mag je in de where clause geen MAX(), MIN(), AVG() functies uitvoeren
pi_73300169
quote:
Op vrijdag 2 oktober 2009 11:04 schreef ReWout het volgende:

[..]

Die query zou ikzelf ook logisch vinden, maar helaas mag je in de where clause geen MAX(), MIN(), AVG() functies uitvoeren
en waarom zou dat niet mogen ?
ooh regels las het net dan moet je het met subqueries doen


SELECT tabel2.uitgave_nummer,tabel1.naam,tabel2.versie_nummer
FROM tabel2
LEFT JOIN tabel1 ON
tabel1.id = tabel2.id_tabel1
WHERE tabel2.uitgave_nummer =
(select max(uitgave_nummer)
from tabel2
where versienummer = (
select max(versie_nummer
from tabel2))

Zoiets Niet getest maar het idee moet ongv duidelijk zijn

meer info over subqueries:
http://dev.mysql.com/tech-resources/articles/4.1/subqueries.html
Redacted
pi_73300581
quote:
Op vrijdag 2 oktober 2009 11:19 schreef cablegunmaster het volgende:

[..]

en waarom zou dat niet mogen ?
ooh regels las het net dan moet je het met subqueries doen


SELECT tabel2.uitgave_nummer,tabel1.naam,tabel2.versie_nummer
FROM tabel2
LEFT JOIN tabel1 ON
tabel1.id = tabel2.id_tabel1
WHERE tabel2.uitgave_nummer =
(select max(uitgave_nummer)
from tabel2
where versienummer = (
select max(versie_nummer
from tabel2))

Zoiets Niet getest maar het idee moet ongv duidelijk zijn

meer info over subqueries:
http://dev.mysql.com/tech-resources/articles/4.1/subqueries.html
Al aardig op de goeie weg alleen retouneert die
1
2
3
4
Def   4   a
Def   4   b
Def   4   c
Def   4   d


En dat is 't dus ook niet helemaal

Deze gegevens staan in de db
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
id, id_tabel1, uitgave, versie
1   1   1   a
2   1   1   b
3   1   1   c
4   1   2   a
5   1   3   a
6   1   3   b
7   2   1   a
8   2   2   a
9   2   2   b
10   3   1   a
11   3   1   b
12   3   2   a
13   3   2   b
14   3   2   c
15   3   3   a
16   4   1   a
17   4   2   a
18   4   3   a
19   4   3   b
20   4   4   a
21   4   4   b
22   4   4   c
23   4   4   d


Had net de volgende query gemaakt... en retouneert me bijna 't goeie alleen retouneert hij niet de waardes van Bcd en Cde omdat die een hogere versie nummer hebben in een van hun eerdere uitgaves.

1
2
Def   4   d
Abc   3   b


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
SELECT 
   n.[titel],
   m.[uitgave],
   m.[versie]
FROM [tabel1] AS n
LEFT JOIN [tabel2] AS m
   ON n.[id] = m.[id_tabel1]
WHERE m.[versie] = (
      SELECT 
         MAX([versie])
      FROM [tabel2]
      WHERE [uitgave] = m.[uitgave]
   )
   AND m.[uitgave] = (
      SELECT
         MAX([uitgave])
      FROM [tabel2]
      WHERE [id_tabel1] = n.[id]
   )
pi_73300685
SELECT
n.[titel],
m.[uitgave],
m.[versie]
FROM [tabel1] AS n
LEFT JOIN [tabel2] AS m
ON n.[id] = m.[id_tabel1]
WHERE m.[versie] = (
SELECT
MAX([versie])
FROM [tabel2]
WHERE [uitgave] = m.[uitgave]
)
AND m.[uitgave] = (
SELECT
MAX([uitgave])
FROM [tabel2]
WHERE [id_tabel1] = n.[id]
)

Lees wat je doet.

je selecteert de max versie. waar uitgave is gelijk aan uitgave... (nutteloos zinnetje)
en uitgave = select maximale uitgave van tabel 2 waar id = id.

Redacted
pi_73300759
SELECT max(tabel2.uitgave_nummer),tabel1.naam,max(tabel2.versie_nummer)
FROM tabel2
LEFT JOIN tabel1 ON
tabel1.id = tabel2.id_tabel1
limit 1
Redacted
pi_73301039
quote:
Op vrijdag 2 oktober 2009 11:38 schreef cablegunmaster het volgende:
Lees wat je doet.

je selecteert de max versie. waar uitgave is gelijk aan uitgave... (nutteloos zinnetje)
Ja klopt toch? Een uitgave (4 bijvoorbeeld) kan meerdere versies hebben (a, b, c, d) en ik moet dus de max versie hebben van die uitgave...
quote:
en uitgave = select maximale uitgave van tabel 2 waar id = id.
Klopt toch ook? Er staan meerdere uitgaves in de tabel... 1, 2, 3, 4?

Ik moet ze dus van alle 4 hebben he niet 1

Wiiiiiiiiiii ik heb 't
1
2
3
4
5
6
7
8
9
10
11
12
13
14
SELECT
   n.[titel],
   MAX(m.[uitgave]),
   MAX(m.[versie])
FROM [tabel1] AS n
LEFT JOIN [tabel2] AS m
   ON n.[id] = m.[id_tabel1]
WHERE m.[uitgave] = (
      SELECT
         MAX(m2.[uitgave])
      FROM [tabel2] AS m2
      WHERE m2.[id_tabel1] = n.[id]
   )
GROUP BY n.[titel], n.[id]


[ Bericht 34% gewijzigd door ReWout op 02-10-2009 13:37:08 ]
pi_73353313
Ik heb een tabel (sql):
1
2
3
4
5
letter | aantal
a           10
b           20
c           30
d           40


En een array:

1
2
3
4
letter | aantal
a           10
c           20
e           30


Nu wil ik bereiken dat a = 20, b=20, c=50, d=40, e=30 in de tabel. Het kan dus voorkomen dat er een letter wél in de array zit en niet in de tabel, en andersom.

Is er een manier waarop ik dit makkelijk op kan lossen? (Ideeën voor een andere opbouw van tabel of iets dergelijks zijn ook welkom :))
  zondag 4 oktober 2009 @ 12:02:45 #272
75592 GlowMouse
l'état, c'est moi
pi_73353340
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_73357669
Kan iemand vertellen hoe ik met PHP kan controleren of een connectie met een DB nog bestaat.
Aan dit bericht kunnen geen rechten worden ontleend.
  zondag 4 oktober 2009 @ 14:48:33 #275
63192 ursel
"Het Is Hier Fantastisch!
pi_73357941
quote:
Op zondag 4 oktober 2009 14:40 schreef poepeneesje het volgende:
Kan iemand vertellen hoe ik met PHP kan controleren of een connectie met een DB nog bestaat.
mysql_ping
abonnement Unibet Coolblue
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')