Pagina 1 van 1

MySQL Query probleem

Geplaatst: 05 maa 2005, 19:55
door Stino
Ik heb devolgende tabellen

Code: Selecteer alles

CREATE TABLE `contact` 
(
		`c_id` int(11) NOT NULL auto_increment,
		`c_firstname` varchar(255) NOT NULL default '',
		`c_lastname` varchar(255) default NULL,
		`c_telephone` varchar(25) default NULL,
		`c_gsm` varchar(25) default NULL,
		`c_userid` int(11) NOT NULL default '0',
		`c_comment` text,
		PRIMARY KEY  (`c_id`)
) TYPE=MyISAM;

Code: Selecteer alles

CREATE TABLE `mail` 
(
		`mail_cid` int(11) NOT NULL default '0',
		`mail_mail` varchar(50) NOT NULL default '',
		PRIMARY KEY  (`mail_cid`,`mail_mail`)
) TYPE=MyISAM
en heb een probleem met deze query:

Code: Selecteer alles

SELECT * from contact, mail WHERE c_id <> 0 AND c_id = mail_cid GROUP BY mail_cid
omdat die geen contacts vindt zonder mail-adres.

Waarschijnlijk maak ik een denkfout ... ik zie iets over het hoofd...

Stino..

Geplaatst: 05 maa 2005, 20:57
door meon
Ge maakt geen joins, dus uw query blijft leeg ;)

http://www.w3schools.com/sql/sql_join.asp

Geplaatst: 05 maa 2005, 21:02
door CueBoy
Er wordt toch wel een join gemaakt ? Tussen mail_cid en c_id.

Kan een "group by" wel gebruikt worden bij een "select *" ? (in Oracle kan het volgens mij niet, vandaar)

Geplaatst: 05 maa 2005, 21:09
door meon
Hm, inderdaad, maar ik gebruik altijd veldnaam.tabelnaam als ik meer dan 1 tabel aanspreek...

Group By is handig als je een functie op je selectie loslaat, zoals count().

Misschien is het handiger om even te zeggen wat het doel is van je query?

Geplaatst: 05 maa 2005, 21:29
door Stino
Het doel is alle gegevens uit de tabel contact te halen, met daarnaast ook het eerste mail-adres dat bij die contact hoort.

Geplaatst: 05 maa 2005, 21:36
door CueBoy
Dus er kunnen meerdere emailadressen per contact zijn ?
En je wilt daar het "eerste" voor een contact uithalen ?

Wat is volgens jou het "eerste" emailadres ?
Is dat een emailadres dat door het contact als primary emailadres wordt opgegeven ? Of nog iets anders ?

Als het een emailadres opgegeven door het contact is, dan zou ik ervoor opteren een veld "mail_primary_id" in je tabel mail op te nemen...

Geplaatst: 05 maa 2005, 21:39
door Stino
Hmm... kheb een oplossing gevonden, wie denkt er nu aan subqueries in de SELECT component... Blijkbaar soms toch handig :oops:

Code: Selecteer alles

SELECT *, (SELECT mail_mail FROM mail WHERE mail_cid = c_id LIMIT 1) FROM contact
Stino...