bigair Geschrieben 27. November 2006 Teilen Geschrieben 27. November 2006 servas, das weiß sicher wer: ich hab eine tabelle mit x wörtern, wovon ich eines per zufall raussuchen will, das genau n zeichen hat... eigentlich alles ganz leiwand, bis auf die anzahl der zeichen: select * from words order by RAND() limit 0,1 das funktioniert, nur jetzt will ich eben nur die wörter mit n buchstaben. select * from LIKE '....' words order by RAND() limit 0,1 Like wäre ja a gute idee, mit like kann man ja nur so gaga machen wie...like '%blabla%'. dann gibts noch REGEXP, was mir eigentlich auch ned viel bringt, weil das ja nur vergleicht ob etwas matcht...also: SELECT '~' REGEXP '[[.~.]]'; ergibt zb 1. notfalls muss ichs in einer schleife machen, solang abfragen bis das zufallswort 5 zeichen hat...was aber nicht ganz sinn der sache ist. das geht sicher besser. lg d Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
bigair Geschrieben 27. November 2006 Autor Teilen Geschrieben 27. November 2006 das zb geht: select word from words where word REGEXP "abacus" Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
tschiffi Geschrieben 27. November 2006 Teilen Geschrieben 27. November 2006 kann mysql subselects ? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
bigair Geschrieben 27. November 2006 Autor Teilen Geschrieben 27. November 2006 ich kann mit adodb welche machen...jo aber das müsste ja auch gehn: select word from words where word REGEXP ".+" ein beliebiges zeichen, genau einmal... er gibt aber alle wörter aus... :f: Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
punkti Geschrieben 27. November 2006 Teilen Geschrieben 27. November 2006 wie schauts mit LIKE ***** aus?? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
radu Geschrieben 27. November 2006 Teilen Geschrieben 27. November 2006 jetzt stehe ich aber ein bissi auf der leitung... was genau wills du, dass rauskommt? soll eine tabelle rauskommen? vor allem, wonach soll gesucht werden? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
bigair Geschrieben 27. November 2006 Autor Teilen Geschrieben 27. November 2006 leider auch schlecht...nedamal ".{5}" geht. das einzige was bei like geht is: "%%%%%"...aber % steht für beliebig viele zeichen...deswegn bringt das ned viel Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
bigair Geschrieben 27. November 2006 Autor Teilen Geschrieben 27. November 2006 jetzt stehe ich aber ein bissi auf der leitung... was genau wills du, dass rauskommt? soll eine tabelle rauskommen? vor allem, wonach soll gesucht werden? ich hab eine table, mit einer spalte. tabellenname: words spaltenname: word ich will ein select, was mir zufällig ein wort raussucht, das genau n buchstaben lang ist =) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
radu Geschrieben 27. November 2006 Teilen Geschrieben 27. November 2006 ich hab eine table, mit einer spalte. tabellenname: words spaltenname: word ich will ein select, was mir zufällig ein wort raussucht, das genau n buchstaben lang ist =) ich glaube nicht, dass das ueberhaupt geht... du kannst den inhalt abfragen, aber jetzt nicht die laenge... da musst du dir was anderes einfallen lassen... so zwischentabellen, oder so. also, mmir ist zumindest nichts bekannt. sorry. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
radu Geschrieben 27. November 2006 Teilen Geschrieben 27. November 2006 oder eben regular expressions, danach in eine zweite tabelle rein und danach die 2 tabellen joinen oder so... echt deppart, aber was anderes faellt mir nicht ein. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
tschiffi Geschrieben 27. November 2006 Teilen Geschrieben 27. November 2006 Select word from words where 1=1 and length(word) = n order by rand() und das ganze pack in ein select, dass dir nur die erste zeile der ergebnismenge zurueckgibt ... wie imma das in MySQL geht in oracle wuerds vielleicht ca so ausschaun: Select * from (Select word from words where 1=1 and length(word) = n order by rand()) where rowid = 1; oder rownum ... wwi hoffe es hilft ? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
bigair Geschrieben 27. November 2006 Autor Teilen Geschrieben 27. November 2006 voll leiwand Select word from words where length(word) = $wordlength order by rand() limit 0,1 eigentlich eh ganz easy Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
LXB Geschrieben 27. November 2006 Teilen Geschrieben 27. November 2006 TRIM vielleicht noch? Sicher is sicher. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
tschiffi Geschrieben 27. November 2006 Teilen Geschrieben 27. November 2006 da i ka ahnung hab von MySQL: limit 0,1 ?? is das quasi mein "rownum = 1" ? voll leiwand Select word from words where length(word) = $wordlength order by rand() limit 0,1 eigentlich eh ganz easy Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
bigair Geschrieben 27. November 2006 Autor Teilen Geschrieben 27. November 2006 ich hab oracle schowida vergessn...das einzige was hängenbliebn is sind die transaktions...und so zeugs. limit 0,1 is...: vom nullten bis zum ersten datensatz. eigentlich würd auch limit 1 reichen Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
tschiffi Geschrieben 27. November 2006 Teilen Geschrieben 27. November 2006 dann wuerd ich noch auf folgendes aufpassen (wieder aus oracle sicht): intern wird als letztes sortiert. das heisst, mit deinem select in oracle: ich schränke zuerst auf die anzahl der Datensätze ein (in dem fall: einer) und sortier den dann nach "rand()" was nimma viel sinn macht. daher mein subselect. zuerst eine randomized ergebnissmenge, und dann den ersten nehmen. sonst wuerd ich "immer" den selben satz bekommen .... hoffe des war jetzt halbwegs deutsch, was ich da gschrieben habe ... und das is alles aus Oracle sicht keine ahnung was MySQL intern macht ... ich hab oracle schowida vergessn...das einzige was hängenbliebn is sind die transaktions...und so zeugs. limit 0,1 is...: vom nullten bis zum ersten datensatz. eigentlich würd auch limit 1 reichen Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
bigair Geschrieben 27. November 2006 Autor Teilen Geschrieben 27. November 2006 jo verstehs schon bei mysql läuft das eher so ab: select inkl. where wird ausgeführt dannach wird das result set mittels order by Rand() irgentwie geordnet und auf das legt er dann erst das limit. aber ich kann das ganze eh auch auf oracle testen...mal schaun ob das mit adodb geht Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.