Ankündigung

Einklappen
Keine Ankündigung bisher.

Random Wert aus MySQL Datenbank abrufen.

Einklappen

Neue Werbung 2019

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

  • codingcore
    hat ein Thema erstellt Random Wert aus MySQL Datenbank abrufen..

    Random Wert aus MySQL Datenbank abrufen.

    Hallo!

    Ich bin gerade echt am verzweifeln..
    Ich schreibe ein Programm in Visual Basic was außerdem mit PHP und MySQL arbeitet.
    Nun meine Frage..

    Wie bekomme ich es hin das wenn ich auf einen Button klicke dann ein random wert aus der MySQL Datenbank angezeigt wird und dieser am besten danach gelöscht wird?

    Ich habe keinen plan wie ich das ganze in PHP hinbekommen soll :/

  • akretschmer
    antwortet
    vermutlich nur unglücklich formuliert. Vielleicht eine Tabelle mit Aufgaben, aus der je Abruf eine zufällig ausgewählt und gelöscht wird, weil diese dem $AUFRUFER dann zugeordnet ist.

    Einen Kommentar schreiben:


  • protestix
    antwortet
    Zitat von codingcore Beitrag anzeigen
    Es soll wie ein Private Prinzip sein also z.B. Jemand generiert einen zufälligen Datensatz dieser wird dann aus der Datenbank entfernt so das nur der jenige der ihn generiert hat auch für sich selber hat
    Wenn ich einen Datensatz generiere, der mir dann angezeigt wird und danach gelöscht wird, ääääh - wozu brauchst du dann den DS in der Tabelle?

    Verstehe es immer noch nicht.

    Einen Kommentar schreiben:


  • akretschmer
    antwortet
    Hehe

    Ja, in PG sind CTE (Common Table Expressions) auch schreibfähig. Kann sehr praktisch sein, auch z.B. um Datensätze von einer in eine andere Tabelle atomar zu verschieben.

    Frohes Fest und so !

    Einen Kommentar schreiben:


  • Perry Staltic
    antwortet
    Haha, schöne Bescherung! Löschen und Selektieren gleichzeitig! Cool!
    Ein vergiftetes Geschenk, das war sicher Knecht Ruprecht! Ach sorry, der hat ja gar nichts mit Weihnachten zu tun.

    Ob sichcodingcore über dieses Geschenk freuen wird?
    Egal, ich hab das Problem noch nicht verstanden und halte mich mit Geschenken zurück.

    Trotzdem wünsche ich auch allen ein frohes und entspanntes Fest!
    (Zentrale Fragen zum Prozedere wie bspw. Blaufichte oder Nordmanntanne sollten ja wenigstens zuhause bereits geklärt sein)

    Einen Kommentar schreiben:


  • akretschmer
    antwortet
    Nu helft ihm doch mal, Leute! Ist schließlich Weihnachten.

    Wir bauen uns mal seine Tabelle und 20 Testdaten:

    Code:
    test=# create table codingcore(vorname text, nachname text);
    CREATE TABLE
    test=*# insert into codingcore select 'Vorname'||((random()*1000)::int)::text, 'Nachname'||((random()*1000)::int)::text from generate_series(1,20) s;
    INSERT 0 20
    Nun jeweils einen per Zufall selecten und gleichzeitig löschen:

    Code:
    test=*# with s as (select * from codingcore order by random() limit 1), d as (delete from codingcore where (vorname, nachname) in (select * from s)) select * from s;
      vorname   |  nachname  
    ------------+-------------
     Vorname256 | Nachname666
    (1 Zeile)
    
    test=*# with s as (select * from codingcore order by random() limit 1), d as (delete from codingcore where (vorname, nachname) in (select * from s)) select * from s;
      vorname   |  nachname  
    ------------+-------------
     Vorname510 | Nachname350
    (1 Zeile)
    
    test=*# with s as (select * from codingcore order by random() limit 1), d as (delete from codingcore where (vorname, nachname) in (select * from s)) select * from s;
      vorname   |  nachname  
    ------------+-------------
     Vorname576 | Nachname741
    (1 Zeile)
    
    test=*# with s as (select * from codingcore order by random() limit 1), d as (delete from codingcore where (vorname, nachname) in (select * from s)) select * from s;
      vorname  |  nachname  
    -----------+-------------
     Vorname88 | Nachname846
    (1 Zeile)
    
    test=*# select count(1) from codingcore ;
     count
    -------
        16
    (1 Zeile)
    
    test=*#
    Wie man sieht, nach 4 mal löschen sind es nur noch 16 Datensätze. Funktioniert also, und ist auch gar nicht schwer.

    Frohes Fest noch!

    Einen Kommentar schreiben:


  • Perry Staltic
    antwortet
    Zitat von hellbringer Beitrag anzeigen
    Fiktive Beispiele helfen halt selten bei der Lösung eines konkreten Problems.
    So ist es, hinzu kommt, dass hier Begrifflichkeiten nicht stimmen.
    Willst Du einen Wert löschen oder einen Datensatz?
    Redest Du von Tabelle oder Spalte?

    Schwierig sieht es auch beim Ablauf. Welchen Sinn macht die Wahl einer Spaltenvorgabe (Name oder Vorname), wenn der Algorithmus davon unabhängig arbeitet?
    (Ein Sinn könnte es ergeben, wenn tatsächlich nur der gewählte Wert der ausgewählten Spalte in einem zufälligen Datensatz gemeint war)

    Ich bin zwar der erste, der empfiehlt, kleine, abstrahierte Beispiele für sein Problem zu erstellen, wenn man mit der Lösung nicht klar kommt, aber die Semantik des Beispiels sollte schon recht nahe am Original sein. Das trägt zum Verständnis bei den Helfern bei und bietet die Chance, dass jemand einen viel besseren Weg als den anfänglich gesuchten aufzeigen kann.

    Einen Kommentar schreiben:


  • hellbringer
    antwortet
    Zitat von codingcore Beitrag anzeigen
    Vor- Und Nachname waren hier nur als Beispiele.
    Fiktive Beispiele helfen halt selten bei der Lösung eines konkreten Problems.

    Zitat von codingcore Beitrag anzeigen
    Als Verwendet markieren geht natürlich auch aber das sie gelöscht werden wäre mir lieber.
    Bevor man dazu irgendwas sagen kann, wäre es notwendig zu verstehen, was du überhaupt erreichen willst. Offenbar willst du etwas anderes, als du erzählt.

    Einen Kommentar schreiben:


  • codingcore
    antwortet
    Wozu werden dann Kombinationen aus Vor- und Nachnamen in der Datenbank gespeichert, wenn du entweder Vorname oder Nachname benötigst?
    Vor- Und Nachname waren hier nur als Beispiele.

    Und warum löschen? Warum nicht einfach als verwendet markieren?
    Als Verwendet markieren geht natürlich auch aber das sie gelöscht werden wäre mir lieber.

    Einen Kommentar schreiben:


  • hellbringer
    antwortet
    Wozu werden dann Kombinationen aus Vor- und Nachnamen in der Datenbank gespeichert, wenn du entweder Vorname oder Nachname benötigst?

    Und warum löschen? Warum nicht einfach als verwendet markieren?

    Einen Kommentar schreiben:


  • codingcore
    antwortet
    Erkläre mal etwas zu deinem Hintergrund dieses unsinnigen Vorhabens.
    Weil, du hast ja danach eine Lücke, bzw. einen fehlenden Vornamen, das ergibt ja nicht wirklich Sinn.

    Deiner Tabelle fehlt die ID und damit der primary key, dieser ist immer notwendig, allein schon um Datensätze eindeutig zu identifizieren.
    Eigentlich möchte ich nur ein Programm schreiben was einen Zufälligen Datensatz wiedergibt und diesen nach dem ausgeben aus der Datenbank löscht.
    Und dabei soll man entscheiden können ob man einen zufälligen Vor- oder Nachnamen angezeigt haben möchte.

    Einen Kommentar schreiben:


  • protestix
    antwortet
    Erkläre mal etwas zu deinem Hintergrund dieses unsinnigen Vorhabens.
    Weil, du hast ja danach eine Lücke, bzw. einen fehlenden Vornamen, das ergibt ja nicht wirklich Sinn.

    Deiner Tabelle fehlt die ID und damit der primary key, dieser ist immer notwendig, allein schon um Datensätze eindeutig zu identifizieren.

    Einen Kommentar schreiben:


  • codingcore
    antwortet
    Hier ist mal ein Bild der Datenbank: Datenbank.png


    Wie kann ich es nun machen das, dass Script bei der Tabelle "Vorname" einen der 3 werte zufällig auswählt und wieder gibt und danach diesen Wert löscht.
    Es sollen nicht zufällige Werte aus beiden Tabellen genommen werden nur z.B. aus der Tabelle "Vorname" wie kann ich das machen? :/

    Einen Kommentar schreiben:


  • codingcore
    antwortet
    Was willst du genau?
    Ich verstehe dich so dass du einen Datensatz zufällig aus einer Tabelle rausfischen willst.
    Wenn dem so ist, dann kannst du das so machen

    PHP-Code:
    SELECT id, wert FROM myTable ORDER BY RAND() LIMIT 1;

    Php hat auch eine Zufallsfunktion.
    Und was soll danach gelöscht werden, der zufällige Datensatz?
    Ja, der zufällig ausgewählte Datensatz soll dann aus der Datenbank gelöscht werden.
    Es soll wie ein Private Prinzip sein also z.B. Jemand generiert einen zufälligen Datensatz dieser wird dann aus der Datenbank entfernt so das nur der jenige der ihn generiert hat auch für sich selber hat

    Einen Kommentar schreiben:


  • protestix
    antwortet
    Was willst du genau?
    Ich verstehe dich so dass du einen Datensatz zufällig aus einer Tabelle rausfischen willst.
    Wenn dem so ist, dann kannst du das so machen

    PHP-Code:
      SELECT id, wert FROM myTable ORDER BY RAND() LIMIT 1; 
    Php hat auch eine Zufallsfunktion.
    Und was soll danach gelöscht werden, der zufällige Datensatz?

    Einen Kommentar schreiben:

Lädt...
X