 tut mir echt leid, das war dumm von mir.
   tut mir echt leid, das war dumm von mir.
					Select wo zahl in id (und id hat meherer zahlen)
				
					Einklappen
				
			
		
	X
- 
	
		
		
		
		
		
	
	
	
	
 Grundsätzlich gern geschehen. Wenn ich allerdings vorher auf deine Crosspostings gestossen wäre ...
 Einen Kommentar schreiben:
- 
	
		
		
		
		
		
	
	
	
	
 spitze! vielen herzlichen dank dir!!
 werd ich mal so versuchen. stark!
 gruss kendor
 Einen Kommentar schreiben:
- 
	
		
		
		
		
		
	
	
	
	
 Wer kommt denn auf so hirnverbrannte Ideen. Da bleibt dir wohl nicht viel anderes übrig. Hier mal eine Skizze, wie su eine Aktualisierung stattfinden könnte:Original geschrieben von kendor
 ... denn die wird von einem externen script so gefüllt :S
 
 ich müsste also irgendwie jedes mal, wenn die datentabelle geändert wird (neuer eintrag oder update) die beziehungstabelle daten_cat auch auktualisieren können.Falls deine Tabellen vom Typ InnoDB sind, würde ich das Ganze noch in eine Transaktion setzen.PHP-Code:$sql = "TRUNCATE TABLE daten_cat"; // Tabelle leeren
 mysql_query($sql) || die(mysql_error());
 $sql = "SELECT
 id, id_cat
 FROM
 daten";
 $inserts = array();
 mysql_query($sql) || die(mysql_error());
 while($obj = mysql_fetch_object){
 $dId = $obj->id;
 $cIds = explode(',', $obj->id_cat);
 foreach($cIds as $cId){
 $inserts[] = "($dId, $cId)";
 }
 }
 $sql = "INSERT INTO daten_cat(id_daten, id_cat)
 VALUES " . implode(', ', $inserts); // Daten neu einfügen
 // echo "$sql<br />";
 mysql_query($sql) || die(mysql_error());
 
 Einen Kommentar schreiben:
- 
	
		
		
		
		
		
	
	
	
	
 sehr gut danke... super board!
 
 nun, wie kann ich denn aus der bestehenden tabelle eine solche neue beziehungstabelle generieren? resp. das problem ist, dass ich auf die daten tabelle keinen einfluss habe, denn die wird von einem externen script so gefüllt :S
 
 ich müsste also irgendwie jedes mal, wenn die datentabelle geändert wird (neuer eintrag oder update) die beziehungstabelle daten_cat auch auktualisieren können. gibts ideen dazu?
 Einen Kommentar schreiben:
- 
	
		
		
		
		
		
	
	
	
	
 Da brauchst du eine neue Beziehungstabelle:Für jede mögliche Daten-Cat-Beziehung gibt es darin einen Eintrag. Dafür kannst du dann das Attribut id_cat aus der Daten-Tabelle löschen. Und wenn du die Cat-Bezeichnung als Paramter hast, geht es natürlich statt dessen über alle drei Tabellen, z.B.:Code:daten_cat +---------+----------+ | id_daten | id_cat | +---------+----------+ | 1 | 1 | | 1 | 2 | | 1 | 3 | | 2 | 3 | | 2 | 5 | | 3 | 1 | | 4 | 1 | | 4 | 3 | | 4 | 5 | | 4 | 6 | | 5 | 2 | | 5 | 4 | | 6 | 6 | +---------+----------+ PHP-Code:$trigger_query = "SELECT
 ID
 FROM
 " . $CONFIG['tpe'] . "daten AS d
 INNER JOIN
 " . $CONFIG['tpe'] . "daten_cat dc AS c ON d.id = dc.id_daten
 INNER JOIN
 " . $CONFIG['tpe'] . "cat AS c USING(id_cat)
 WHERE
 c.name = '$this->rec'";
 
 Einen Kommentar schreiben:
- 
	
		
		
		
		
		
	
	
	
	
 sdanke - aber leider funktioniert auch das nicht... :S
 also vielleicht hab ich dein query falsch interpretiert (oder du meine tabelle).
 bin etwas begriffsstutzig im moment wohl...
 
 also nochmal zum problem:
 
 ich habe folgende tabellen:
 und ich will jetzt alle einträge aus der tabelle "daten" in denen bei id_cat ein bestimmter wert vorkommt.Code:daten: +-----------------+----------------------+------+-----+ | ID | id_cat | start | stop | ... | +-----------------+----------------------+------+-----+ | 1 | 2,3,1 | 2000-12-12 12:32:09 | ... | | | 2 | 5,3 | 2123-12-12 12:34:09 | ... | | | 3 | 1 | 2234-12-12 12:35:09 | . | | 4 | 1,3,5,6 | 2345-12-12 12:36:09 | . | | 5 | 2,4 | 2456-12-12 12:37:09 | . | | 6 | 6 | 2567-12-12 12:38:09 | | +-------+---------+----------------------+------+--- cat: +--------+----------+---------+-----+ | id_cat | subofcat | Name | ... | +--------+----------+---------+-----+ | 1 | 0 | kateg1 | ... | 2 | 1 | kateg12 | .. | 3 | 1 | kateg13 | . | 4 | 5 | kateg51 | . | 5 | 0 | kateg5 | | 6 | 5 | kateg52 | +--------+----------+---------+--- 
 
 beispiel:
 ich will alle einträge (daten.ID) die zur kategorie "kateg1" gehören (id_cat=1)
 das würde mir als resultat für ID folgende werte geben: 1,3,4
 
 versucht habe ich das mit all den obigen queries und dem hier:
 könnt ihr mir helfen? vielen dank!PHP-Code:$trigger_query="SELECT ID FROM ". $CONFIG['tpe'] . "daten AS d
 INNER JOIN ". $CONFIG['tpe'] . "cat AS c ON d.id_cat = c.id_cat
 WHERE c.id_cat = {$this->rec}";
 Zuletzt geändert von kendor; 07.02.2008, 13:10.
 Einen Kommentar schreiben:
- 
	
		
		
		
		
		
	
	
	
	
 Das wäre dann die Abfrage:PHP-Code:$sql = "SELECT
 id
 FROM "
 . $CONFIG['tpe'] . "daten AS d
 INNER JOIN
 cat AS c ON d.id = c.datenId
 WHERE
 c.catId = $this->rec";
 
 Einen Kommentar schreiben:
- 
	
		
		
		
		
		
	
	
	
	
 hey ghostgambler
 
 das klingt ja ganz verlockend einfach. nur habe ich keinen plan was du meinst was ich jetzt machen soll... gibt es denn mysql anweisungen die das direkt machen können?
 
 ich wäre sehr froh für ein kleines code snippet oder so denn wenn ich nach datenbanknormalisierung suche komme ich zu "JOINS&Co" und alles andere als zur suche und vorallem SELECTion in serialisierten daten. danke
 
 vorallem gehts mir ja darum die ID's herauszufinden, in denen in der zeile id_cat bestimmte werte vorkommen. wenn ich im netz suche, erhalte ich immer dasselbe resultat: SELECT * FROM ... WHERE ... LIKE ... aber genau das funktioniert ja bei mir nicht.
 muss ich die werte in id_cat irgendwie noch wandeln? mmh :SZuletzt geändert von kendor; 07.02.2008, 11:50.
 Einen Kommentar schreiben:
- 
	
		
		
		
		
		
	
	
	
	
 Ja, normalisieren, d.h. aus id_cat eine eigene Tabelle machen und dann die id_cat-Spalte in die Tonne klopfen.
 Einen Kommentar schreiben:
- 
	
		
		
			
			
			
		
		
		
		
	
	
	
	
 Select wo zahl in id (und id hat meherer zahlen)hallo leute
 ich versuche nun schon seit ner kleinen ewigkeit folgendes:
 also ich habe eine tabelle
 ein beispiel eines solchen datensatzes könnte sein:Code:tabelle_daten: ID (int) id_cat (varchar) id_event (int) start (datetime) stop (datetime) ... 
 ihr seht, im feld "id_cat" stehen meherer zahlen (die ich per implode da reingespeichert habe).Code:1 6,7,23,43,53 34 2012-12-12 12:32:09 2123-12-12 21:21:21 ... 
 
 MEINE FRAGE nun:
 ich versuche die id aller einträge zu finden, die eine gewisse zahl in dieser zelle "id_cat" haben zu finden.
 
 ich habe folgende varianten versucht und es funktioniert einfach nicht:
 Code:SELECT ID,id_cat FROM {$CONFIG['tpe']}daten HAVING INSTR(id_cat,'{$this->rec}')Code:SELECT ID,id_cat FROM {$CONFIG['tpe']}daten WHERE id_cat LIKE '%{$this->rec}%'und sogarCode:SELECT ID,id_cat FROM {$CONFIG['tpe']}daten HAVING INSTR(id_cat,'{$this->rec}',1)>0undCode:SELECT ID,id_cat FROM {$CONFIG['tpe']}daten WHERE CONCAT_WS(',',id_cat)={$this->rec}das muss doch irgendwie gehen?Code:SELECT ID,id_cat FROM {$CONFIG['tpe']}daten WHERE MATCH(id_cat) AGAINST({$this->rec} IN BOOLEAN MODE)
 ich bin euch super dankbar für hilfe!
 (ps. {$CONFIG['tpe']} ist für globale einstellungen - wird in diesem fall mit "tabelle_" überschrieben und in {$this->rec} steht die zu findende zahl also 2 oder 4 oder 200 oder 132)Zuletzt geändert von kendor; 07.02.2008, 02:02.Stichworte: -
 
 
           
	
Einen Kommentar schreiben: