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

  • 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 :/

  • #2
    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 idwert FROM myTable ORDER BY RAND() LIMIT 1
    Php hat auch eine Zufallsfunktion.
    Und was soll danach gelöscht werden, der zufällige Datensatz?

    Kommentar


    • #3
      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

      Kommentar


      • #4
        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? :/

        Kommentar


        • #5
          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.

          Kommentar


          • #6
            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.

            Kommentar


            • #7
              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?

              Kommentar


              • #8
                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.

                Kommentar


                • #9
                  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.

                  Kommentar


                  • #10
                    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.

                    Kommentar


                    • #11
                      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!
                      PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

                      Kommentar


                      • #12
                        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)

                        Kommentar


                        • #13
                          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 !
                          PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

                          Kommentar


                          • #14
                            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.

                            Kommentar


                            • #15
                              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.
                              PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

                              Kommentar

                              Lädt...
                              X