Ankündigung

Einklappen
Keine Ankündigung bisher.

mysql pseudo rekrusion

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • mysql pseudo rekrusion

    hallo,

    grund für meine überlegung ist eine tagcloud.

    ich habe eine tabelle mit tags, eine mit posts und eine unendlich zu unendlich relationstabelle zwischen diesen.

    ich möchte nun, erreichen, dass auf einer detailseite die tags der aktuellen seite "ausgegeben" werden, daraufhin wird geprüft welcher beitrag gleiche tags verwendet, falls noch nicht genug tags gefunden wurden sind, werden diese tags dem select hinzugefügt, dies soll rekrusiv (maximal anzahl der ebenen) geschehen.

    Code:
    	SELECT blog_tags.id AS tmpTbl FROM blog_tags
    			JOIN blogposts_blogtags ON blogposts_blogtags.blogtags_id = blog_tags.id
    			WHERE blogposts_blogtags.blogposts_id = inPostId;	
    
    			WHILE i < maxRounds OR (tmpFriends - 1) > tmpMaxTags DO
    		
    					
    			  	SELECT tmpTbl.* FROM (  
    					
    					SELECT blog_tags.id AS id FROM tmpTbl
    					JOIN blogposts_blogtags ON blogposts_blogtags.blogtags_id = blog_tags.id
    					WHERE blogposts_blogtags.blogposts_id IN tmpTbl			
    	
    				) AS tmpTbl
    
    				JOIN blogposts_blogtags ON blogposts_blogtags.blogtags_id = tmpTbl.id
    				WHERE blogposts_blogtags.blogposts_id IN tmpTbl.id;	
    			
    		
    				SET i = i + 1;
    			END WHILE;
    meine idee war, einfach die temporäre tabelle wieder und wieder zu überschreiben, ist soetwas überhaupt möglich? gibt es sinnvollere ansätze?


  • #2
    Das halte ich für zuviel des guten, was man mit 1 Abfrage machen sollte. Hier schlage ich eine Kopplung aus PHP und SQL vor. Schreibe Dir eine Funktion über PHP, die eine Abfrage auslöst, die du dann auch rekursiv aufrufen kannst. Alles über mySQL zu machen, wird zu experimentell und unübersichtlich. Das wäre meine Meinung.

    Kommentar

    Lädt...
    X