[SQL] Problem große SELECT Abfrage

Servus
Ich hab mal wieder ein kleines Problem und null Ahnung warum es auftritt und wie es zu beheben ist:
Ich habe mehrere kleine Tabellen, welche ich zu einer großen zusammenfasse:
Code:
CREATE TABLE literatureComplete (
		DESCRIBED_SPECIES TEXT,
		DESCRIBED_GENUS TEXT,
		DESRIBED_FAMILIES TEXT,
		PRIMARY KEY(ID)
	) CHARACTER SET utf8 COLLATE utf8_general_ci SELECT literature.*,
	GROUP_CONCAT(DISTINCT AUTOR ORDER BY POSITION SEPARATOR ' & ') AS AUTORS,
	GROUP_CONCAT(DISTINCT CONCAT_WS(' ', species.SPECIES_GENUS, species.SPECIES_SPECIES) SEPARATOR ', ') AS DESCRIBED_SPECIES, // <-- Hier fehlt manchmal was
	GROUP_CONCAT(DISTINCT IFNULL(genusLit.GENUS, '') SEPARATOR ', ') AS DESCRIBED_GENUS,
	GROUP_CONCAT(DISTINCT CONCAT_WS(' ', species_ref.SPECIES_GENUS, species_ref.SPECIES_SPECIES) SEPARATOR ', ') AS NOV_SPECIES,
	GROUP_CONCAT(DISTINCT IFNULL(genus_gref.GENUS, '') SEPARATOR ', ') AS NOV_GENUS,
	GROUP_CONCAT(DISTINCT IFNULL(genus_fref.FAMILY, '') SEPARATOR ', ') AS NOV_FAMILY
FROM literature JOIN autorLit
	ON autorLit.LITERATURE_ID  = literature.ID
	LEFT JOIN (speciesLit JOIN species ON speciesLit.SPECIES_ID = species.ID)
	ON speciesLit.LITERATURE_ID = literature.ID
	LEFT JOIN genusLit
	ON genusLit.LITERATURE_ID = literature.ID
	LEFT JOIN species AS species_ref
	ON species_ref.ORIGINAL_DESCRIPTION_SPECIES_REF = literature.ID
	LEFT JOIN genus AS genus_gref
	ON genus_gref.ORIGINAL_DESCRIPTION_GENUS_REF = literature.ID
	LEFT JOIN genus AS genus_fref
	ON genus_fref.ORIGINAL_DESCRIPTION_FAMILY_REF = literature.ID
GROUP BY literature.ID
ORDER BY AUTORS, YEAR;

Nun ist es so, dass bei dem Feld DESCRIBED_SPECIES bei manchen Einträgen der hintere Teil fehlt. Wenn man dann aber an die Abfrage noch ein
Code:
WHERE ID = <ID des fehlerhaften Eintrags>
dranhängt, dann ist die Zelle komplett vorhanden.

Vllt hat jmd von euch eine Idee wo hier der Fehler liegt.

MrSpider

EDIT: Ohne CREATE TABLE davor (also nur das große SELECT) gehts auch nicht. Die Abfrage ergibt ca. 4100 Ergebnisse
 
Vermutlich liegt es am DISTINCT selber, wegen den Redundanzen, also solltest du mal versuchen die Abfrage ohne DISTINCT zu tätigen.

Grüße

Zephyros
 
Wenn man die Abfrage ohne Distincts macht, gibt es das Problem dass in einer Zelle ein Eintrag mehrmals vorhanden ist, obwohl es ihn in der Datenbank nur einmal gibt.
Bsp: s Anhang
Auch wenn man alle Distincts weglässt und die große Abfrage macht, fehlt bei der einen Zelle der hintere Teil

EDIT:
Gelöst: Die Variable group_concat_max_len müsste nur auf einen größeren Wert gesetzt werden.
 
Zurück
Oben