Toon posts:

[MySQL] Mijn MySQL Query probs...

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hier post ik ze dan steeds maar anders krijgen we zoveel topix..


Deze query werkt niet :( teminste geeft geen result..
PHP:
1
<?$sql = "SELECT * FROM advertentie WHERE adtype='$type'";if (strlen($zoek) > 0) {  // als er gezocht moet worden :)   $sql .= " AND comment='%$zoek%' OR subject='%$zoek%'";}?>

en kan deze query korter? 1 ipv 4?
PHP:
1
<?    $sql = "SELECT * FROM advertentie WHERE adtype='0'";    $aangeboden = mysql_num_rows(mysql_query($sql));    $sql = "SELECT * FROM advertentie WHERE adtype='1'";    $gevraagd = mysql_num_rows(mysql_query($sql));    $sql = "SELECT * FROM advertentie WHERE adtype>'1'";    $fout = mysql_num_rows(mysql_query($sql));    $sql = "SELECT * FROM advertentie";    $total = mysql_num_rows(mysql_query($sql));?>

Tnx :)

  • supersook
  • Registratie: Januari 2001
  • Laatst online: 06-09 07:52

supersook

Professioneel prutser

misschien is het handig als je ook een beschrijving van je database geeft

Verwijderd

Topicstarter
Op zaterdag 30 maart 2002 10:38 schreef supersook het volgende:
misschien is het handig als je ook een beschrijving van je database geeft
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
CREATE TABLE advertentie (
  id int(4) NOT NULL auto_increment,
  adtype int(1) NOT NULL default '0',
  adddate int(10) default NULL,
  key varchar(5) NOT NULL default '00000',
  user varchar(25) NOT NULL default '',
  phone varchar(15) NOT NULL default '',
  mphone varchar(15) NOT NULL default '',
  email varchar(50) NOT NULL default '',
  subject varchar(25) default NULL,
  comment text NOT NULL,
  views int(11) NOT NULL default '0',
  PRIMARY KEY (id)
) TYPE=MyISAM;

:) dat is mijn db :)

  • supersook
  • Registratie: Januari 2001
  • Laatst online: 06-09 07:52

supersook

Professioneel prutser

Probeer eerst eens na het doen van je query een mysql_error() af te vangen. Als daar niets instaat zou ik je variabelen, die je gebruikt in je query, eens controleren op juistheid.

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Mischien wil je iets LIKE '%iets%' gebruiken ipv = ...

Maar ga eerst es uitleggen wat je met 'werkt niet' bedoelt. Met simpelweg 'werkt niet' kunnen we je niet helpen.

  • MacWebber
  • Registratie: September 2000
  • Niet online
Op zaterdag 30 maart 2002 10:56 schreef ACM het volgende:
Mischien wil je iets LIKE '%iets%' gebruiken ipv = ...
U gaat door voor de koelkast :)

  • Digihelp ®
  • Registratie: Maart 2001
  • Laatst online: 25-08 10:10
En kan deze query korter? 1 ipv 4?
PHP:
1
<?$sql = "SELECT * FROM advertentie WHERE adtype='0'";$aangeboden = mysql_num_rows(mysql_query($sql));$sql = "SELECT * FROM advertentie WHERE adtype='1'";$gevraagd = mysql_num_rows(mysql_query($sql));$sql = "SELECT * FROM advertentie WHERE adtype>'1'";$fout = mysql_num_rows(mysql_query($sql));$sql = "SELECT * FROM advertentie";$total = mysql_num_rows(mysql_query($sql));?>
Je zou met if statements kunnen werken, maar ik weet niet zeker of mysql dat inmiddels ondersteunt.

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

MySQL ondersteunt dat IF, maar ik vraag me af of dat in dit geval erg interessant is. Sowieso is COUNT() een interessante (je records tellen met mysql_num_rows() is een beetje ... tja, hoe zal ik het zeggen... onzin.
code:
1
2
3
4
5
6
SELECT
   COUNT(id) as aangeboden
FROM
   advertenties
WHERE
   adtype=0

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

Topicstarter
Op zaterdag 30 maart 2002 15:23 schreef drm het volgende:
MySQL ondersteunt dat IF, maar ik vraag me af of dat in dit geval erg interessant is. Sowieso is COUNT() een interessante (je records tellen met mysql_num_rows() is een beetje ... tja, hoe zal ik het zeggen... onzin.
code:
1
2
3
4
5
6
SELECT
   COUNT(id) as aangeboden
FROM
   advertenties
WHERE
   adtype=0
Tnx deze is inderdaad veel handiger, en scheelt ook wat PHP bereken tijd :P

Maar ik zit nu weer met een ander project vraagje

Ik heb 2 tabellen
code:
1
2
3
4
5
6
7
8
tabel1
-----> id
-----> naam
-----> bla
tabel2
-----> id
-----> tid
-----> naam

Ik wil nu met 1 query alles uitlezen van tabel 2 en ook checken hoeveel x tid per tabel1 id gebruikt wordt

oftewel een soort query like

SELECT * FROM gallery LEFT JOIN count(tabel2.tid) maar dat werkt niet...

  • Digihelp ®
  • Registratie: Maart 2001
  • Laatst online: 25-08 10:10
Kan je iets duidelijker zijn wat je nu precies wil??
Volgens mij kan je dit sowieso niet in 1 query doen?
Want als je wil weten hoeveel keer er een verwijzing is naar een andere tabel, zul je daarop moeten groeperen en dan krijg je dus nooit de hele tabel meer terug.

  • SWINX
  • Registratie: Juni 2001
  • Laatst online: 02-06 23:18
Op zondag 31 maart 2002 19:19 schreef xtentic het volgende:

[..]
zo denk ik:
code:
1
2
3
4
5
6
7
SELECT
   COUNT(*)
FROM
   tabel1,
   tabel2
WHERE
   tabel1.id = tabel2.tid

Mannen komen van Mars Tweakers, vrouwen van Venus Bokt


  • Digihelp ®
  • Registratie: Maart 2001
  • Laatst online: 25-08 10:10
Dit is wel een oplossing voor het tweede deel van de vraag van Xtentic, maar niet een selectie van de hele tabel.

  • SWINX
  • Registratie: Juni 2001
  • Laatst online: 02-06 23:18
Op zondag 31 maart 2002 23:32 schreef los_joost het volgende:
Dit is wel een oplossing voor het tweede deel van de vraag van Xtentic, maar niet een selectie van de hele tabel.
voor de hele tabel2 doe je bij de select nog ff wat meer
code:
1
2
3
4
5
SELECT
   COUNT(tid),
   tabel2.id,
   tid,
   tabel2.naam

maar nu weet ik ff niet meer of je bij een count ook nog andere dingen kon opvragen :?
ik dacht gewoon van wel, maar ik kan het natuurlijk mis hebben...

Mannen komen van Mars Tweakers, vrouwen van Venus Bokt


  • Digihelp ®
  • Registratie: Maart 2001
  • Laatst online: 25-08 10:10
Volgens mij mag dat gewoon wel. Maar het ligt aan de data of de WHERE clause er niet voor zorgt dat niet alle records van de tabel meer getoond worden.

  • SWINX
  • Registratie: Juni 2001
  • Laatst online: 02-06 23:18
Op zondag 31 maart 2002 23:41 schreef los_joost het volgende:
Volgens mij mag dat gewoon wel. Maar het ligt aan de data of de WHERE clause er niet voor zorgt dat niet alle records van de tabel meer getoond worden.
lijkt me hier weinig mis hier bij de WHERE query

hij pakt alleen waar 1.id gelijk is aan 2.tid

Mannen komen van Mars Tweakers, vrouwen van Venus Bokt


Verwijderd

Topicstarter
Wat ik wil?... grin..

Ik wil gewoon alles uit tabel1 uitlezen zoals je met een gewone SELECT * FROM tabel1 maar dan wil ik tevens checken hoevaak het id van tabel1 voorkomt in tabel2.tid en dat includen in de data die ik haal uit de SELECT * FROM tabel1 en dat bv koppel aan de naam items oftewel een fake cell (gecreeerd op een of andere manier).

dat ik dus bv kan uitlezen
PHP:
1
<?$sql = "SELECT * FROM tabel1"; // etc$query = mysql_query($sql);for ($i = 1; $i < mysql_num_rows($query); $i++) {$list = mysql_fetch_assoc($query);echo "id: $list[id] naam: $list[naam] bla: $list[bla] en aantal items gevonden $list[items]";}?>

^-- ff uit het hoofd..

  • SWINX
  • Registratie: Juni 2001
  • Laatst online: 02-06 23:18
Op zondag 31 maart 2002 19:19 schreef xtentic het volgende:

... alles uitlezen van tabel 2 ...
Op maandag 01 april 2002 00:35 schreef xtentic het volgende:
... alles uit tabel1 uitlezen ...
Wat wil je nou??
Alles uit tabel1 of alles uit tabel2 ??

Mannen komen van Mars Tweakers, vrouwen van Venus Bokt


Verwijderd

Topicstarter
Op maandag 01 april 2002 00:43 schreef SWINX het volgende:

[..]


[..]

Wat wil je nou??
Alles uit tabel1 of alles uit tabel2 ??
zie post voor deze post :)... alles van tabel1 + count van nids in tabel2 die overeenkomen met het id van tabel1 :)

:D Sorry als ut een beetje vaag overkomt.

  • GraasGast
  • Registratie: Oktober 2000
  • Laatst online: 03-09 17:11

GraasGast

Analogue Heaven

PHP:
1
<?if (strlen($zoek) > 0) {  // als er gezocht moet worden :)...}?>

kan beter zo:
PHP:
1
<?if ($zoek) {  // als er gezocht moet worden :)...}?>

:)

Verwijderd

Topicstarter
Op maandag 01 april 2002 03:16 schreef GraasGast het volgende:
PHP:
1
<?if (strlen($zoek) > 0) {  // als er gezocht moet worden :)...}?>

kan beter zo:
PHP:
1
<?if ($zoek) {  // als er gezocht moet worden :)...}?>

:)
Tnx, dat zou inderdaad handiger zijn, of dat ik het check met isSet :)

  • SWINX
  • Registratie: Juni 2001
  • Laatst online: 02-06 23:18
zo dus ongeveer ?
code:
1
2
3
4
5
6
7
8
9
10
11
SELECT
   COUNT(*),
   tabel1.id,
   tabel1.naam,
   tabel1.bla,
   tabel2.tid
FROM
   tabel1,
   tabel2
WHERE
   tabel2.tid = tabel1.id

Mannen komen van Mars Tweakers, vrouwen van Venus Bokt


Verwijderd

Topicstarter
Ik heb um ff aangepast naar wat ik nodig was maar kreeg een error :(
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
SELECT
   COUNT(*),
   newsarea.id,
   newsarea.subject,
   news.nid
FROM
   newsarea,
   news
WHERE
   news.nid = newsarea.id


MySQL retourneerde: 


Mixing of GROUP columns (MIN(),MAX(),COUNT()...) with no GROUP columns is illegal if there is no GROUP BY clause

  • SWINX
  • Registratie: Juni 2001
  • Laatst online: 02-06 23:18
moest nog een GROUP BY bij als je COUNT gebruikt....
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
SELECT
   COUNT(*),
   tabel1.id,
   tabel1.naam,
   tabel1.bla,
   tabel2.tid
FROM
   tabel1,
   tabel2
WHERE
   tabel2.tid = tabel1.id
GROUP BY
   tabel1.id

Mannen komen van Mars Tweakers, vrouwen van Venus Bokt


Verwijderd

Topicstarter
Op maandag 01 april 2002 12:09 schreef SWINX het volgende:
moest nog een GROUP BY bij als je COUNT gebruikt....
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
SELECT
   COUNT(*),
   tabel1.id,
   tabel1.naam,
   tabel1.bla,
   tabel2.tid
FROM
   tabel1,
   tabel2
WHERE
   tabel2.tid = tabel1.id
GROUP BY
   tabel1.id
Klopt!!..
code:
1
2
3
4
5
6
7
8
9
10
SELECT
COUNT(*),
newsarea.id,
newsarea.subject,
news.nid
FROM
newsarea,
news
WHERE
news.nid = newsarea.id GROUP BY newsarea.id

werkt alleen zie ik nu de volgende data
code:
1
2
3
4
COUNT(*)  id  subject  nid  
1 1 Gallery 1 
1 3 Features 3 
2 4 Admin 4

en dat klopt niet, want ik wil weten hoeveel nids er zijn per id... en niet welk nummer dat is :P

tis wel goed |:( eric lezen >:).. maaruh hoe kan ik die count itlezen?...

en ik mis nog in dit rijtje..
code:
1
2
3
4
5
COUNT(*)  id  subject  nid  
1 1 Gallery 1 
0 2 Pictures 0
1 3 Features 3 
2 4 Admin 4

0 2 Pictures 0 <-- :D

om het ff wat gemakkelijker te maken heb je hier mijn sql dump
code:
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
CREATE TABLE news (
  id tinyint(4) NOT NULL auto_increment,
  nid tinyint(4) NOT NULL default '0',
  date varchar(10) NOT NULL default '',
  time varchar(5) NOT NULL default '',
  user varchar(15) NOT NULL default '',
  subject varchar(255) NOT NULL default '',
  shortdesc varchar(75) NOT NULL default '',
  longdesc text NOT NULL,
  views tinyint(4) NOT NULL default '0',
  link varchar(255) NOT NULL default '',
  PRIMARY KEY (id)
) TYPE=MyISAM;
# --------------------------------------------------------

#
# Tabel structuur voor tabel `newsarea`
#

CREATE TABLE newsarea (
  id tinyint(4) NOT NULL auto_increment,
  subject varchar(75) NOT NULL default '',
  longdesc text NOT NULL,
  PRIMARY KEY (id)
) TYPE=MyISAM;

Verwijderd

Op maandag 01 april 2002 12:12 schreef xtentic het volgende:

[..]

om het ff wat gemakkelijker te maken heb je hier mijn sql dump
code:
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
CREATE TABLE news (
  id tinyint(4) NOT NULL auto_increment,
  nid tinyint(4) NOT NULL default '0',
  date varchar(10) NOT NULL default '',
  time varchar(5) NOT NULL default '',
  user varchar(15) NOT NULL default '',
  subject varchar(255) NOT NULL default '',
  shortdesc varchar(75) NOT NULL default '',
  longdesc text NOT NULL,
  views tinyint(4) NOT NULL default '0',
  link varchar(255) NOT NULL default '',
  PRIMARY KEY (id)
) TYPE=MyISAM;
# --------------------------------------------------------

#
# Tabel structuur voor tabel `newsarea`
#

CREATE TABLE newsarea (
  id tinyint(4) NOT NULL auto_increment,
  subject varchar(75) NOT NULL default '',
  longdesc text NOT NULL,
  PRIMARY KEY (id)
) TYPE=MyISAM;
Beetje offtopic misschien, maar ik zou een index key zetten op 'nid' in de tabel 'news'!

Verwijderd

Topicstarter
Op maandag 01 april 2002 12:49 schreef DiEana het volgende:
Beetje offtopic misschien, maar ik zou een index key zetten op 'nid' in de tabel 'news'!
is een mogelijkheid maar nu nog niet echt vantoepassing denk ik, want dat is voor de snelheid en nu met 10 records is ie zo snel als ie maar wezen kan :P

Verwijderd

Op maandag 01 april 2002 12:50 schreef xtentic het volgende:

[..]

is een mogelijkheid maar nu nog niet echt vantoepassing denk ik, want dat is voor de snelheid en nu met 10 records is ie zo snel als ie maar wezen kan :P
Ja sorry, kon het niet laten ;)

Ik wou je er gewoon op duiden dat het je het niet mocht vergeten! :9

En als ik toch bezig ben: user varchar(15): ik zou werken met userids, ipv usernames (zoals je het nu hebt), staat zoiezo mooier, en is altijd leuk als iemand zijn username veranderd ofzo :) Dus 'gewoon' een extra tabel met al je users in.

Verwijderd

Topicstarter
Op maandag 01 april 2002 12:51 schreef DiEana het volgende:

[..]

Ja sorry, kon het niet laten ;)

Ik wou je er gewoon op duiden dat het je het niet mocht vergeten! :9
Juist, nee dat zal ik niet vergeten en al zou ik dat wel doen dan merk ik snel genoeg dat ik er een index op moet zetten... maaruh help es met me query :+

Tja dit wordt toch alleen benut door admins... en het is nog maar in build mode ;) maar is zekers een idee om mee verder te gaan :)

Verwijderd

Topicstarter
Oplossing tnx 2 Mooo
select newsarea.*, count(news.nid) as count from newsarea, news where newsarea.id = news.nid group by newsarea.id LIMIT 0, 30
en nog 1 :D
select newsarea.*, count(news.nid) as count from newsarea left join news on newsarea.id = news.nid group by newsarea.id
Pagina: 1