phpbar.de logo

Mailinglisten-Archive

AW: AW: query-probleme

AW: AW: query-probleme

waeldchen at etainme.de waeldchen at etainme.de
Die Jul 15 17:40:58 CEST 2003


>SELECT DISTINCT spalte, spalte, spalte ... undsoweiter, funktioniert aber
>nur wenn die angezeigten Spalten alle identisch sind, wenn du die ID mit
>anzeigst, gehts schon nicht mehr, und verlangsamt zusaetzlich. Dein Group
by taugt
>hier aber auch nichts, der ist nur gut, wenn du Funktionen wie MAX oder SUM
>oder COUNT nutzen willst. Am besten definierst du einmal im klarstem
>hochdeutsch, was du sehen moechtest.

Ok, also ich habe eine tabelle mit dem namen "game".
der aufbau sieht folgendermassen aus:

Field  	Type 			Null 		Default 	Extra

  id  	bigint(10)   	No    			auto_increment
  answer  	varchar(250)   	No
  name  	varchar(250)   	No
  email  	varchar(250)   	No
  dat  	datetime   		No  		0000-00-00 00:00:00
  ip  	varchar(250)   	No  		0
  host  	varchar(250)   	No  		0
  number  	bigint(10)   	No  		0
  strasse  	varchar(100)   	No
  plz  	varchar(30)   	No  		0
  stadt  	varchar(100)   	No  		0


In dieser Tabelle sind 495 000 Eintrage enthalten. Wir veranstalten diverse
gewinnspiele, an jedem dieser gewinnspiele kann ein und die selbe person
teilnehmen. diese wird dann in die tabelle "game" jedesmal auf's neu
aufgenommen (ich wei? dies ist nicht gerade die feine englische art,habe ich
allerdings nicht verbrochen). daraus resultierend kann man festhalten, dass
ein und die selbe person mehrmals in dieser tabelle enthalten sein kann, der
einzige unterschied liegt in einem solchen falle in dem schlusselfeld "id".
mit einer ausnahme, es kann auch sein, dass eine person seinen namen in
solchen fallen jeweils unterschiedlich geschrieben hat, doch der rest der
angaben identisch ist. folglich fallt hier die klausel "DISTINCT" ja wohl
leider flach.
meine aufgabe liegt nun darin herauszufinden wieviele menschen in der
tabelle game angelegt sind. hierbei soll ich die doppelten eintrage
herausfiltern. Konkret soll ich alle menschen(eintrage) erfassen, die eine
komplette emailadresse und eine komplette postanschrift hinterlegt haben =>
alle doppelten antrage sollen nicht angezeigt werden. erlaubt ist
jedoch,dass ein und die selbe person in diesem zusammenhang mehrere
emailadressen hinterlegt hat. aus diesem grunde habe ich auch ein "Group By"
auf die email adresse versucht.
ich hoffe nun ist meine aufgabenstellung klar geworden.
zur erinnerung habe ich nochmal meine beiden query-versuche beigefugt.:

1)
Select
	count(*),
	`name`,
	`email`,
	`strasse`,
	`plz`,
	`stadt`

FROM `game`

WHERE
	Trim(`name`) <> ''
	AND Trim(`email`) <> ''
	AND Trim(`strasse`) <> ''
	AND Trim(`plz`) <> ''
	AND Trim(`stadt`) <> ''

GROUP BY `email`


2)
Select
	`id`,
	`name`,
	`email`,
	`strasse`,
	`plz`,
	`stadt`
FROM `game`
WHERE
	Trim(`name`) <> ''
	AND Trim(`email`) <> ''
	AND Trim(`strasse`) <> ''
	AND Trim(`plz`) <> ''
	AND Trim(`stadt`) <> ''
GROUP BY `email`

ich hoffe ihr konnt mir helfen,ich komme einfach nicht weiter.

mfg. jerome


-- 
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->>  http://www.4t2.com/mysql 


php::bar PHP Wiki   -   Listenarchive