Regel 14:quote:
1 2 3 | $queryget = mysql_query( 'SELECT * FROM gastenboek')or die("query error")); ?> |
Nee, er staan precies genoeg haakjes, alleen niet op de juiste plek.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
Nu staat er een ) te veel.quote:mysql_query( ' ') or die ("mysql_error());
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.
Zoiets?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.
1 |
Waarom niet? Dat werkt wel, en 't is een stuk minder omslachtig :)quote:oh btw ik wil niet horen dat ik dus
SELECT * FROM gallery ORDER BY views DESC LIMIT 1
ofzo :P
Ik geloof niet dat ik snap wat je zegt....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
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 | 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 |
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?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
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 haalquote: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?
Nee helaas niet want...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
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 | 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 |
1 2 3 4 5 6 7 8 9 | 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] |
Wanneer ik dan MAX(m.[Versie]) wegdoe (en toevoeg bij GROUP BY anders error) dan krijg je weer dubbele resultatenquote:Op donderdag 1 oktober 2009 17:48 schreef ReWout het volgende:
[..]
Nah want die resultaat (hoeft) correnspondeert dan niet met de andere geselecteerde rijen
Die query zou ikzelf ook logisch vinden, maar helaas mag je in de where clause geen MAX(), MIN(), AVG() functies uitvoerenquote: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
en waarom zou dat niet mogen ?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
Al aardig op de goeie weg alleen retouneert diequote: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
1 2 3 4 | Def 4 b Def 4 c Def 4 d |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | 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 |
1 2 | Abc 3 b |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | 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] ) |
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: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)
Klopt toch ook? Er staan meerdere uitgaves in de tabel... 1, 2, 3, 4?quote:en uitgave = select maximale uitgave van tabel 2 waar id = id.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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] |
1 2 3 4 5 | a 10 b 20 c 30 d 40 |
1 2 3 4 | a 10 c 20 e 30 |
Dankquote:Op zondag 4 oktober 2009 12:02 schreef GlowMouse het volgende:
http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html
mysql_pingquote: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.
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |