MySQL Query probleem

Alles over programmeren en development binnen de IT-wereld
Plaats reactie
Stino
Plus Member
Plus Member
Berichten: 163
Lid geworden op: 03 jan 2004, 13:49

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..
Gebruikersavatar
meon
Administrator
Administrator
Berichten: 16757
Lid geworden op: 18 feb 2003, 22:02
Twitter: meon
Locatie: Bree
Uitgedeelde bedankjes: 582 keer
Bedankt: 780 keer
Provider

Ge maakt geen joins, dus uw query blijft leeg ;)

http://www.w3schools.com/sql/sql_join.asp
CueBoy
Elite Poster
Elite Poster
Berichten: 1712
Lid geworden op: 23 mei 2003, 23:13
Uitgedeelde bedankjes: 5 keer
Bedankt: 10 keer

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)
If you can't beat them, confuse them.
Gebruikersavatar
meon
Administrator
Administrator
Berichten: 16757
Lid geworden op: 18 feb 2003, 22:02
Twitter: meon
Locatie: Bree
Uitgedeelde bedankjes: 582 keer
Bedankt: 780 keer
Provider

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?
Stino
Plus Member
Plus Member
Berichten: 163
Lid geworden op: 03 jan 2004, 13:49

Het doel is alle gegevens uit de tabel contact te halen, met daarnaast ook het eerste mail-adres dat bij die contact hoort.
CueBoy
Elite Poster
Elite Poster
Berichten: 1712
Lid geworden op: 23 mei 2003, 23:13
Uitgedeelde bedankjes: 5 keer
Bedankt: 10 keer

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...
If you can't beat them, confuse them.
Stino
Plus Member
Plus Member
Berichten: 163
Lid geworden op: 03 jan 2004, 13:49

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...
Plaats reactie

Terug naar “Development”