[MySQL/ PHP] error in SQL statement

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Zoolander
  • Registratie: Januari 2003
  • Laatst online: 23-11-2022

Zoolander

superslim!

Topicstarter
Ik krijg elke keer een error en weet niet waarom.


code:
1
2
$level = mysql_query ("SELECT MIN(year) AS min, MAX(year) AS max FROM nieuws WHERE active='yes' AND status!='deleted'");
$fetch_level = mysql_fetch_array($level);

zo als hierboven werkt het wel,
en zo niet.
code:
1
2
$level = mysql_query ("SELECT year, MIN(year) AS min, MAX(year) AS max FROM nieuws WHERE active='yes' AND status!='deleted'");
$fetch_level = mysql_fetch_array($level);

Ik wil dat hij ook gewoon de jaartallen opvraagd van de hele tabel.
Moet ik daar soms een nieuwe query voor schrijven of misschien een subquery?

mijn naam slaat nergens op, althans niet op mij :P


Acties:
  • 0 Henk 'm!

  • cameodski
  • Registratie: Augustus 2002
  • Laatst online: 06-11-2023
Daar moet je een aparte query voor maken.

Never underestimate the power of


Acties:
  • 0 Henk 'm!

  • Zoolander
  • Registratie: Januari 2003
  • Laatst online: 23-11-2022

Zoolander

superslim!

Topicstarter
ok, waarom eigelijk?

mijn naam slaat nergens op, althans niet op mij :P


Acties:
  • 0 Henk 'm!

  • JeRa
  • Registratie: Juni 2003
  • Laatst online: 30-04 10:28

JeRa

Authentic

offtopic:
edit: sorry, hier stond geblaat :{

[ Voor 90% gewijzigd door JeRa op 12-05-2004 14:35 ]

ifconfig eth0 down


Acties:
  • 0 Henk 'm!

  • ripexx
  • Registratie: Juli 2002
  • Laatst online: 17-09 20:52

ripexx

bibs

Je gebruikt naast je aggerated functies ook gewone veldnamen, je moet dan gebruik gaan maken van GROUP BY :)

buit is binnen sukkel


Acties:
  • 0 Henk 'm!

  • cameodski
  • Registratie: Augustus 2002
  • Laatst online: 06-11-2023
Omdat de eerste query maar één record teruggeeft en de tweede geeft voor elk jaar een record terug.
En een group by is geen optie, omdat je dan per jaar een min en max zou gaan bepalen en dat is volgens mij niet wat je wilt.

* cameodski verbaast zich erover dat MySQL opeens moeilijk doet over een verkeerde aggregate.

[ Voor 14% gewijzigd door cameodski op 12-05-2004 14:42 ]

Never underestimate the power of


Acties:
  • 0 Henk 'm!

  • Zoolander
  • Registratie: Januari 2003
  • Laatst online: 23-11-2022

Zoolander

superslim!

Topicstarter
Ik krijg inderdaad nu vage resultaten met die GROUP BY
Ook al heb ik 2005 in mijn tabel staan, geeft hij 2004 terug als MAX(year)
Snap ik niet.
Dus nieuwe query dan maar maken?

dit is de hele code btw

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// fetch active anuals
$level = mysql_query ("SELECT MIN(year) AS min, MAX(year) AS max FROM nieuws WHERE active='yes' AND status!='deleted'");
$fetch_level = mysql_fetch_array($level);

print $fetch_level["max"];

for($i=$fetch_level['min']; $i<=$fetch_level['max']; $i++) {

    print "<b>$i</b> <br>";

    $items = mysql_query ("SELECT * FROM nieuws WHERE year=$i ORDER BY id, subid");

    while ($fetch_items = mysql_fetch_array($items)) {
            
            print "ID: " . $fetch_items["id"] . " | SUBID: " .  $fetch_items["subid"] . " end. <br><br>";
        }

    print "this will contain the edit boxes and codes for adding and deleteing points for $i! <br><br>";
}


zonder year, ervoor en GROUP BY year achter de query.

mijn naam slaat nergens op, althans niet op mij :P


Acties:
  • 0 Henk 'm!

  • ripexx
  • Registratie: Juli 2002
  • Laatst online: 17-09 20:52

ripexx

bibs

cameodski schreef op 12 mei 2004 @ 14:40:
[...]
* cameodski verbaast zich erover dat MySQL opeens moeilijk doet over een verkeerde aggregate.
MySQL is daar opzich niet zo moeilijk over zolang je alleen aggregated functies gebruikt vind ie het best, netzoals je GROUP BY gewoon in een query kan gebruiken zonder dat je fout krijgt. MySQL is helaas niet een echte held in dit verhaal. ACM had daar een mooi lijstje van, met nog meer van die rare manieren/dingen.

AT TS

Geef eens enevorbeeld van de data die jij er uit wil hebben. Verder is het met year in je SELECT en de GROUP BY of zonder beide. Als ik het goed heb tenminste. MySQL is niet zo lekekr met de fout meldingen icm aggregated fucnties.

[ Voor 19% gewijzigd door ripexx op 12-05-2004 14:49 ]

buit is binnen sukkel


Acties:
  • 0 Henk 'm!

  • cameodski
  • Registratie: Augustus 2002
  • Laatst online: 06-11-2023
ripexx schreef op 12 mei 2004 @ 14:47:
[...]

MySQL is daar opzich niet zo moeilijk over zolang je alleen aggregated functies gebruikt vind ie het best, netzoals je GROUP BY gewoon in een query kan gebruiken zonder dat je fout krijgt. MySQL is helaas niet een echte held in dit verhaal. ACM had daar een mooi lijstje van, met nog meer van die rare manieren/dingen.
TS kreeg een foutmelding, dus vandaar mijn verbazing. En tevens ook twijfels of het wel de foutmelding is, die ik in eerste instantie dacht dat het was.

@TS: ik snap eigenlijk niet waarom je je eerste en laatste jaar van je actieve nieuws ophaalt.

[ Voor 20% gewijzigd door cameodski op 12-05-2004 15:09 ]

Never underestimate the power of


Acties:
  • 0 Henk 'm!

  • Zoolander
  • Registratie: Januari 2003
  • Laatst online: 23-11-2022

Zoolander

superslim!

Topicstarter
Nou, ik werk er wel omheen ofzo, extra query dan maar.... ?
Wilde gewoon ALLE jaartallen uit de table hebben in 1 query,
omdat de MIN & MAX niet altijd het hoogst of het laagst zijn vanwege de where statement (die overigens wel nodig is)

mijn naam slaat nergens op, althans niet op mij :P


Acties:
  • 0 Henk 'm!

  • ripexx
  • Registratie: Juli 2002
  • Laatst online: 17-09 20:52

ripexx

bibs

Zoolander schreef op 12 mei 2004 @ 15:09:
Nou, ik werk er wel omheen ofzo, extra query dan maar.... ?
Wilde gewoon ALLE jaartallen uit de table hebben in 1 query,
omdat de MIN & MAX niet altijd het hoogst of het laagst zijn vanwege de where statement (die overigens wel nodig is)
En ik neem aan dat er dan dubbele enzo in voorkomen. Je kan ook eens kijken naar DISTINCT :) mischien is dat wel wat je zoekt?

buit is binnen sukkel


Acties:
  • 0 Henk 'm!

  • Zoolander
  • Registratie: Januari 2003
  • Laatst online: 23-11-2022

Zoolander

superslim!

Topicstarter
Haha, ik maak wel een nieuwe query.
Maaar thanx for the info AGGREGATED functies!
Ik ga voor de grap ook wel even met DISTINCT stiekem kijken of het werkt..... ;)

mijn naam slaat nergens op, althans niet op mij :P


Acties:
  • 0 Henk 'm!

  • cameodski
  • Registratie: Augustus 2002
  • Laatst online: 06-11-2023
Zoolander schreef op 12 mei 2004 @ 15:23:
Haha, ik maak wel een nieuwe query.
Maaar thanx for the info AGGREGATED functies!
Ik ga voor de grap ook wel even met DISTINCT stiekem kijken of het werkt..... ;)
Ik vraag me alleen nog af waar je MIN(year) en MAX(year) voor nodig hebt. Als je het alleen gebruikt om later het nieuws per jaar mee op te halen, dan kun je er beter één query van maken.

Never underestimate the power of


Acties:
  • 0 Henk 'm!

  • Zoolander
  • Registratie: Januari 2003
  • Laatst online: 23-11-2022

Zoolander

superslim!

Topicstarter
Ik gebruik het om te kijken welke jaren actief staan en NIET op deleted of active=no staan.

mijn naam slaat nergens op, althans niet op mij :P


Acties:
  • 0 Henk 'm!

  • cameodski
  • Registratie: Augustus 2002
  • Laatst online: 06-11-2023
En waarom doe je niet zoiets:
code:
1
2
3
4
5
SELECT *
FROM nieuws
WHERE active='yes'
AND status!='deleted'
ORDER BY id, subid

Never underestimate the power of


Acties:
  • 0 Henk 'm!

  • Zoolander
  • Registratie: Januari 2003
  • Laatst online: 23-11-2022

Zoolander

superslim!

Topicstarter
Omdat ik graag moeilijk doe en nog niet zolang met MySQL bezig ben. ;)
Zo heb ik ook dezelfde jaartallen....
Maar hoe haal ik die MAX en MIN er dan uit?

want die grenzen heb ik wel nodig.....

[ Voor 12% gewijzigd door Zoolander op 12-05-2004 15:38 ]

mijn naam slaat nergens op, althans niet op mij :P


Acties:
  • 0 Henk 'm!

  • cameodski
  • Registratie: Augustus 2002
  • Laatst online: 06-11-2023
En waar heb je die grenzen dan voor nodig?

Never underestimate the power of

Pagina: 1