Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[MYSQL] tabellen combineren (join?)*

Pagina: 1
Acties:
  • 335 views

  • wheel
  • Registratie: December 2001
  • Laatst online: 18-11 12:07
Wellicht voor sommigen piece of cake, ik kom er niet uit (redelijk nieuw op gebied van joins) en na een dag proberen; zie door de bomen het bos even niet meer...

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
CREATE TABLE `ca_campaign` (
  `ca_id` int(5) NOT NULL auto_increment,
  `ca_name` varchar(50) default NULL,
  `ca_description` varchar(255) default NULL,
  `ca_co_id` int(5) NOT NULL,
  PRIMARY KEY  (`ca_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;

CREATE TABLE `co_company` (
  `co_id` int(5) NOT NULL auto_increment,
  `co_name` varchar(255) default NULL,
  PRIMARY KEY  (`co_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;

CREATE TABLE `uc_user_campaign` (
  `uc_us_id` int(5) NOT NULL,
  `uc_ca_id` int(5) NOT NULL,
  PRIMARY KEY  (`uc_us_id`,`uc_ca_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

CREATE TABLE `us_user` (
  `us_id` int(5) NOT NULL auto_increment,
  `us_geslacht` enum('heer','mevrouw') default NULL,
  `us_voornaam` varchar(50) default NULL,
  `us_rang` int(2) default '99',
  PRIMARY KEY  (`us_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=12 ;


Ik wil graag alle namen van mensen die bij hetzelfde bedrijf horen.

De tabel uc_user_campaign dient ervoor omdat een gebruiker meerder campagnes (binnen hetzelfde bedrijf) kan beheren.

Misschien denk ik te moeilijk.

Dit heb ik geprobeerd:

code:
1
2
3
4
SELECT us_id, us_voornaam, ca_name 
FROM us_user 
INNER JOIN uc_user_campaign ON us_id = uc_us_id 
INNER JOIN ca_campaign ON ca_id = uc_ca_id


Wie helpt me even verder?

  • Alain
  • Registratie: Oktober 2002
  • Niet online
Zoiets?

SQL:
1
2
3
4
5
6
SELECT us_id, us_voornaam, ca_id, ca_name, co_id, co_name 
FROM us_user  
INNER JOIN uc_user_campaign ON us_id = uc_us_id  
INNER JOIN ca_campaign ON ca_id = uc_ca_id 
INNER JOIN co_company ON co_id = ca_co_id 
WHERE co_id = 4;

You don't have to be crazy to do this job, but it helps ....


  • wheel
  • Registratie: December 2001
  • Laatst online: 18-11 12:07
AlainS schreef op dinsdag 13 mei 2008 @ 20:11:
Zoiets?

SQL:
1
2
3
4
5
6
SELECT us_id, us_voornaam, ca_id, ca_name, co_id, co_name 
FROM us_user  
INNER JOIN uc_user_campaign ON us_id = uc_us_id  
INNER JOIN ca_campaign ON ca_id = uc_ca_id 
INNER JOIN co_company ON co_id = ca_co_id 
WHERE co_id = 4;
Dank! Dat is een eind in de richting die ik op wil, ja!

Ik wil echter de medewerkers selecteren op basis van het us_id (us_id ingelogde gebruiker opgeslagen in sessie). Dit lukt me nog niet helemaal.

Dus: ik wil alle medewerkers die werkzaam zijn bij het bedrijf waarvan een medewerker is ingelogd (medewerker gekoppeld aan campagne, campagne gekoppeld aan bedrijf).

Als ik r. 6 uit jouw code vervang door het volgende, dan geeft dat logischerwijs niet het gewenste resultaat:

code:
1
WHERE us_id = 1;


Heb je nog een suggestie?

Ik wil ook graag alle gebruikers die aan dezelfde campagne gekoppeld zijn als de ingelogde gebruiker, maar ik denk dat als ik de eerste query heb, ik die wel zelf kan uitvogelen.

  • whoami
  • Registratie: December 2000
  • Laatst online: 11:55
Kijk, op GoT willen we je best helpen, en we willen ook best helpen bij het oplossen van simpele problemen, maar het is toch wel de bedoeling dat je eerst probeert om zelf wat kennis op te rakelen door bv eens een tutorial door te lopen.
In jouw geval kan ik vrijwel met 100% zekerheid zeggen, dat je dit nog niet gedaan hebt. Je mist blijkbaar nogal wat basis-kennis over SQL, en het is toch niet de bedoeling dat we dit via het 'Programming' forum jou gaan aanleren.
Dit icm een beetje logisch nadenken, moet er toch wel voor zorgen dat je een oplossing voor jouw probleem vind ?

Klik

https://fgheysels.github.io/


Dit topic is gesloten.