Toon posts:

[SQL] Join probleem

Pagina: 1
Acties:

Verwijderd

Topicstarter
ik heb het volgende probleem mijn query werkt wel onder windows (iis + php + mysql) en niet op mijn domain (linux + apache + mysql).

de query genereerd een overzicht van gebruikers die gewijzigd zijn en door welke beheerder

del query is:
code:
1
2
3
4
SELECT beheer.NICK as beheerder ,
gebruiker.NICK as gebruiker FROM beheer_log 
INNER JOIN gebruiker as beheer ON beheer.ID = beheer_log.beheerder_id 
INNER JOIN gebruiker ON gebruiker.ID = beheer_log.gebruiker_id

volgende tabellen:

gebruiker
-----------------
ID //identificatie nummer gebruiker
NICK // nickname gebruiker (of beheerder)
verder niet intressant

beheer_log
---------------
gebruiker_id (identificatie van gewijzigde gebruiker)
beheerder_id (identificatie van beheerder)
reden

ben heletijd aan het kloojen geweest en nu ga ik slapen hoop dat jullie wat weten ;)

ik = :Z

fout melding op mijn domain:
Supplied argument is not a valid MySQL result resource in

lokaal op mijn windows systeem loopt hij goed .. caps heb ik gecontroleerd is helemaal goed

  • tomato
  • Registratie: November 1999
  • Niet online
Wat is de foutmelding of wat gebeurt er :?

Verder word ik absoluut niet wijzer van je query, je gebruikt erg onduidelijke benamingen en je schrijft alles in een regel achter elkaar.

Maar mijn gok: case

Dus kijk eens goed naar je hoofdletter gebruik.

Verwijderd

Topicstarter
beheer_log is een tabel waarbij ik bij houd welke beheerder wijzigingen maakt bij welke gebruiker

  • tomato
  • Registratie: November 1999
  • Niet online
Leuk, maar zoals ik al aangaf: ik zie een gebruiker.id in je query voorkomen, maar dit veld komt niet in je database voor. Wel een gebruiker.ID

Verwijderd

Topicstarter
je bedoelde beheer.id heb nu beheer.ID gedaan zelfde probleem

Verwijderd

Topicstarter
eventueel is hier het resultaat en source te bezichigen:

http://www.chatnu.nl/beheer/test.php

  • Mir
  • Registratie: Maart 2001
  • Niet online

Mir

code:
1
2
3
4
SELECT beheer.NICK as beheerder ,
gebruiker.NICK as gebruiker FROM beheer_log 
INNER JOIN (INNER JOIN gebruiker ON gebruiker.ID = beheer_log.gebruiker_id)
gebruiker as beheer ON beheer.ID = beheer_log.beheerder_id

ik ben laatste paar dagen hard bezig geweest met Inner joins ivm school + acces...don't ask ;)

Maar ik kwam erachter dat je geen 2 inner join's achter elkaar kon gooien maar ze steeds dieper moet nestellen.

Of dit zo helemaal goed is weet ik niet. + dat ik niet weet of dit alleen zo in acces is?

Gl iig!


[edit]

ROFL... vul http://van-polanen.com/ in mijn explorer in..krijg ik met local te zien :) geinig..

(of ligt dit aan mijn stommeteit en is dit zeer logisch??! :D)

Verwijderd

Op zondag 20 januari 2002 00:54 schreef F13tsbel het volgende:
de query is:
code:
1
2
3
4
SELECT beheer.NICK as beheerder ,
gebruiker.NICK as gebruiker FROM beheer_log 
INNER JOIN gebruiker as beheer ON beheer.ID = beheer_log.beheerder_id 
INNER JOIN gebruiker ON gebruiker.ID = beheer_log.gebruiker_id

volgende tabellen:
klopt die
JOIN ... ON blaat = woei
wel? Is het niet gewoon
JOIN ... ON blaat ?

(weet het niet hoor, gokje)

  • picablaat
  • Registratie: Februari 2001
  • Laatst online: 21-08 08:07
misschien een vreemd vraagje, maar waarom doe je in godsnaam twee INNER JOIN's op dezelfde tabel? daar schiet je naar mijn mening helemaal nix mee op.

tevens ist me nog niet helemaal duidelijk wat je nu precies wil...

  • Mir
  • Registratie: Maart 2001
  • Niet online

Mir

Op zondag 20 januari 2002 13:15 schreef picablaat het volgende:
misschien een vreemd vraagje, maar waarom doe je in godsnaam twee INNER JOIN's op dezelfde tabel? daar schiet je naar mijn mening helemaal nix mee op.

tevens ist me nog niet helemaal duidelijk wat je nu precies wil...
* Mir kijkt er weer even naar

damn, je hebt gelijk!! :D wazig!


[edit]
code:
1
2
3
4
SELECT beheer.NICK as beheerder ,
gebruiker.NICK as gebruiker FROM beheer_log 
INNER JOIN gebruiker as beheer ON beheer.ID = beheer_log.beheerder_id 
Where gebruiker.ID = beheer_log.gebruiker_id

is dit niet beter dan?

(INNER JOIN gebruiker as beheer >... kan dit?)

Verwijderd

Topicstarter
wat ik wil ik heb een tabel "beheer_log" in deze tabel staan acties die de beheerder heeft uit gevoerd en op welke gebruiker

beheer_log
------------
beheerder_id (nummer beheerder)
gebruiker_id (nummer gebruiker)
onderdeel
reden

nu wil ik dus een overzicht van welke beheerder welke gebruiker heeft bewerkt en wat zijn reden daarvoor is.
Nu wil ik dus niet het nummer van de beheerder weergeven maar de naam van de beheerder en de naam van de gebruiker.

ja sorry voor de waarschijnlijk vage joins heb namelijk nog nooit zo'n situatie gehad en heb geen id hoe ik dit anders op zou moeten lossen :D

Verwijderd

Topicstarter
Op zondag 20 januari 2002 13:15 schreef picablaat het volgende:
misschien een vreemd vraagje, maar waarom doe je in godsnaam twee INNER JOIN's op dezelfde tabel? daar schiet je naar mijn mening helemaal nix mee op.

tevens ist me nog niet helemaal duidelijk wat je nu precies wil...
Die 2 INNER JOIN's werken wel op mun locale windows verhaal :( das het vreemde ... het is geen caps probleem heb alles al 4x langs gelopen :(

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 12-09 21:31

Janoz

Moderator Devschuur®

!litemod

Heb je al ff een mysql_error() geprobeert om te zien WAT mysql precies fout vindt aan je query??

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • klokop
  • Registratie: Juli 2001
  • Laatst online: 12-09 09:11

klokop

swiekie swoeng

Script requests mogen niet, en script offers dan?

in 7 3/4 minuut:
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
drop database yeah_oh_yeah;
drop table beheerder;
drop table gebruiker;
drop table beheer_log;

create database yeah_oh_yeah;
use yeah_oh_yeah;

create table beheerder (
ID    int(10) primary key,
NICK  varchar(20)
);

insert into beheerder values(1,'de baas');
insert into beheerder values(2,'de bazin');


create table gebruiker (
ID    int(10) primary key,
NICK  varchar(20)
);

insert into gebruiker values(10,'woppie');
insert into gebruiker values(11,'stombo');
insert into gebruiker values(12,'sukkel');
insert into gebruiker values(13,'ikke');

create table beheer_log(
gebruiker_id int(10),
beheerder_id int(10),
reden     varchar(20)
);

insert into beheer_log values(10,1,'stom gedrag');
insert into beheer_log values(10,2,'stom gedrag');
insert into beheer_log values(11,1,'leukheid');

select  
  beh.NICK as beheerder, 
  usr.NICK as gebruiker, 
  log.reden as 'reden van verwijdering'
from    beheer_log log, gebruiker usr, beheerder beh
where   log.gebruiker_id = usr.ID
and     log.beheerder_id = beh.ID;

Oh-yeah! :)

Copy, paste in mysql client window, klaar...

"Passing silhouettes of strange illuminated mannequins"


Verwijderd

Topicstarter
code:
1
2
3
4
5
6
7
8
9
10
11
select
  gebruiker.NICK as gebruiker,
  beheerder.NICK as beheerder 
FROM 
  beheer_log,
  gebruiker,
  gebruiker beheerder
WHERE 
  beheer_log.gebruiker_id = gebruiker.ID
AND
  beheer_log.beheerder_id = beheerder.ID

Dat is um thanx

regel 1 sql:
maak geen query als je te moe bent ander gaat het nooit lukken :)

  • Mir
  • Registratie: Maart 2001
  • Niet online

Mir

Op zondag 20 januari 2002 15:23 schreef F13tsbel het volgende:
regel 1 sql:
maak geen query als je te moe bent ander gaat het nooit lukken :)
regel #2 [algemeen programmeren]:
begin er nooit aan als je dronken of moe bent.
Je maakt meer kapot dan het kapot was.

Verwijderd

regel 3: Zorg altijd dat overal de zelfde versies draaien van de ondersteunende programmas (ie SQL-server, web-server, data-acces components etc.)
Pagina: 1