Supportnet Computer Supportnet Games Supportnet Kochen Explipedia
Login: guestBesucher online: 125
Supportnet Computerforum
SUPPORT
Home
Forum
Tipps & Infos
Blitz Angebote
Members
Hilfe
Video

TOP THEMEN
SSD Test
Alles über SSDs

Android Tipps
iPad Tipps
Google Tipps
Windows 8 FAQ
Windows 7 FAQ
E-Mail FAQ
Netzwerk FAQ
Festplatten FAQ
Datenrettung FAQ
Bildbearbeitung FAQ

Top iPhone Apps
Computer Einsteiger
Die 5 besten...
Explipedia
Themen
Direktlinks

Neue Einträge
News einsenden News einschicken
Tipps einsenden Tipp einschicken

SN-LINKS

Suche
Befreundete Seiten
Top Seiten

Supportnet/Forum/Datenbanken



Supportnet/Forum/Datenbanken
von Noahsraven vom 03.10.2017, 17:38 Diese Seite den Supportnet Favoriten hinzufügen  Mißbrauch, Beleidigungen und Blödsinn den Moderatoren melden


mySQL - mehrere Spalten als eine Spalte ausgeben und(!) speichern

 (342 Hits)

Hi,

Ich beziehe mich hier auf den Forumsbeitrag:
http://www.supportnet.de/fresh/2006/3/id1300119.asp
den ich nicht wieder ausgrabe möchte da dieser anscheinend schon
von 2006 stammt.

Dort wird die Lösung:

"select concat(vname, nname) as name from tabelle"

angeboten.

Die bei mir:

SELECT CONCAT(street, ' ', nr) as Strasse FROM win_player ORDER
BY ID

lautet.

Die tatsächlich auch funktioniert ABER dessen Ergebnis nur temporär
im PHPMyAdmin angezeigt wird anstatt das das Resultat in der schon
vorhandenen, leeren Spalte Strasse permanent gespeichert wird.

Kann mir jemand helfen?

Danke im voraus

Noah's Raven


Antwort schreiben 50 Bonuspunkte

Antworten...
Antwort 1 von computerschrat vom 03.10.2017, 19:17 Mißbrauch, Beleidigungen und Blödsinn den Moderatoren melden

Hallo Noah,

mit dem Select markierst du nur die Daten. PHPMyAdmin zeigt dir dann zwar den selektierten Wert an, macht aber nicht mehr damit. Du musst nach dem Select die Daten noch lesen und an der gewünschten Stelle abspeichern.

Gruß
computerschrat


Antwort noch nicht bewertet Als gute Antwort bewerten
Antwort 2 von Noahsraven vom 03.10.2017, 19:25 Mißbrauch, Beleidigungen und Blödsinn den Moderatoren melden

Hi computerschrat,

meine MySQL-Shell-Kenntnisse beschränken sich derzeit auf Anlegen,
Import/Export, Rechtevergabe, beseitigen von Umlautproblemen etc.
Ich habe noch nie einzelne Spalten ausgelesen/zurückgeschrieben o.ä.
Kannst du vielleicht etwas genauer werden.
Vielleicht mit einem Beispiel oder so?

Danke

Noah's Raven


Antwort noch nicht bewertet Als gute Antwort bewerten
Antwort 3 von paul_1 vom 03.10.2017, 19:32 Mißbrauch, Beleidigungen und Blödsinn den Moderatoren melden

Hallo,

schau mal:

http://www.supportnet.de/t/2430051

Gruß
Paul1


Antwort noch nicht bewertet
Antwort 4 von Noahsraven vom 03.10.2017, 19:36 Mißbrauch, Beleidigungen und Blödsinn den Moderatoren melden

hi paul_1,

Sorry aber das was du da gepostet hast sieht sehr nach MSSQL/Access
aus.

Ich wüsste nicht wie mir das bei MySQL weiterhilft


Grüße Noah's Raven


Antwort noch nicht bewertet Als gute Antwort bewerten
Antwort 5 von paul_1 vom 03.10.2017, 19:38 Mißbrauch, Beleidigungen und Blödsinn den Moderatoren melden

Hallo nochmal,

in SQL würde das dann so aussehen:

SELECT Tabelle1.Text1, Tabelle1.Text2, Tabelle1.Text3, Tabelle1.Text4, IIf([Text1]="" And [Text3]="" And [Text2]="" And [Text4]="","",[Text1]+"."+" " & [Text2]+"."+"" & [Text3]+"."+"" & [Text4]) AS Zusammenführen, IIf([Text1]="" And [Text3]="","",[Text1]+"."+" " & [Text3]) AS Ausdr1, IIf([Text1]="" And [Text3]="" And [Text2]="" And [Text4]="","",[Text1]+"."+" " & [Text2]+"."+"" & [Text3]+"."+"" & [Text4]) AS Ausdr2
FROM Tabelle1;

Gruß
Paul1


Antwort noch nicht bewertet
Antwort 6 von paul_1 vom 03.10.2017, 19:43 Mißbrauch, Beleidigungen und Blödsinn den Moderatoren melden

Hallo,

stimmt, es ist auch Access-SQL, wie das auf MySQL umzuändern wäre, kann ich Dir leider nicht sagen.

Gruß
Paul1


Antwort noch nicht bewertet
Antwort 7 von Noahsraven vom 03.10.2017, 20:03 Mißbrauch, Beleidigungen und Blödsinn den Moderatoren melden

hi paul_1,

jetzt wo ich es mir genauer durchlese steige ich da auch so einiger maßen
durch denke ich.

Ich werde es die Tage dann mal an einer Kopie-Kopie testen
(geheiligt sei das Backup)
und dann posten ob es geklappt hat


Antwort noch nicht bewertet Als gute Antwort bewerten
Antwort 8 von Noahsraven vom 03.10.2017, 20:05 Mißbrauch, Beleidigungen und Blödsinn den Moderatoren melden

Hi,
also doch noch MSSQL
dann vergiss was ich zuletzt geschrieben habe

Gruß Noah's Raven


Antwort noch nicht bewertet Als gute Antwort bewerten
Antwort 9 von paul_1 vom 03.10.2017, 21:12 Mißbrauch, Beleidigungen und Blödsinn den Moderatoren melden

nochmal,

der Code aus AW5 beinhaltet die gesamte Abfrage mit den Sonderwünschen des Fragestellers, für das Zusammenführen von nur 4Textfeldern sieht der eingeschränkte Code folgendermaßen aus:

SELECT Tabelle1.Text1, Tabelle1.Text2, Tabelle1.Text3, Tabelle1.Text4, IIf([Text1]="" And [Text3]="" And [Text2]="" And [Text4]="","",[Text1]+"."+" " & [Text2]+"."+"" & [Text3]+"."+"" & [Text4]) AS Zusammenführen
FROM Tabelle1;

die Formel im Feld "Zusammenführen" lautet:
Zusammenführen: Wenn([Text1]="" Und [Text3]="" Und [Text2]="" Und [Text4]="";"";[Text1]+"."+" " & [Text2]+"."+"" & [Text3]+"."+"" & [Text4])

Zusammenführen heißt das ungebundene Feld mit der Formel, die Textfelder wären auf Deine Namen umzutaufen

diese Info nur der ordnunghalber, vielleicht hilft's doch

Gruß
Paul1


Antwort noch nicht bewertet
Antwort 10 von computerschrat vom 03.10.2017, 21:22 Mißbrauch, Beleidigungen und Blödsinn den Moderatoren melden

Hallo Noah,

du kannst die selektierten Werte zunächst in eine Variable übernehmen:

$result = mysql_query('SELECT CONCAT(street, ' ', nr) as Strasse FROM win_player ORDER
BY ID');


Anschließend schreibst du den Inhalt von Result in die gewünschte Zelle der Datenbank
$Abfrage = "INSERT INTO TABELLENNAME (SPALTENNAME) values ('$result')";
$ergebnis = mysql_query( $Abfrage, $DATENBANKVERBINDUNG);


TBELLENNAME und SPALTENNAME musst du noch durch die für deine Datenbank zutreffenden Bezeichnungen ersetzen.
DATENBANKVERBINDUNG ist die Verbindung, unter der du dich per mysql_connect mit der Datenbank verbunden hast

Ich habe es jetzt nicht tatsächlich getestet, insbesondere das CONCAT, aber so sollte es funktionieren.

Gruß
computerschrat


Antwort noch nicht bewertet Als gute Antwort bewerten
Antwort 11 von notmysql vom 03.10.2017, 21:42 Mißbrauch, Beleidigungen und Blödsinn den Moderatoren melden

Hallo, welche Versionen:
  • PHP
  • MySQL
    Du willst ja die Werte in einer Tabelle anzeigen, ein Beispiel mit PDO_MYSQL.
    HTML Tags in einer PHP Datei:

    $dbh = new PDO($dsn, $dbuser, $dbpass);
    	$dbh->exec('SET CHARACTER SET utf8');
    	$sth = $dbh->query('SELECT refnr, anrede, nachname, passwort, FROM Teilnehmer
    	WHERE refnr >= '.$pos.' LIMIT 15 '); 
    	$data = $sth->fetchALL(PDO::FETCH_ASSOC);
    echo '
    <table class="table">
    	<tr> 
    	<th>Ref-Nr</th>
    	<th>Anrede</th>
    	<th>Nachname</th>	
    	<th>Passwort intern</th>
    	</tr>';
    	foreach($data as $row) { 
    	echo "<tr>";
    echo "<td >".$row['refnr']."</td>";
    echo "<td>".$row['anrede']."</td>";
    echo "<td>".$row['nachname']."</td>";	
    echo "<td>".$row['passwort']."</td>";	
    echo "</tr>";
    Oben (echo ') wird die Tabelle beschriftet und unten (foreach) die Datensätze von der Datenbank abgeholt und entsprechend ausgegeben.
    Das ist natürlich nicht der ganze Code, nur eben die Tabelle, also wie sie aufgebaut wird.
    Hier findest du einiges dazu:PHP und mySQL - Daten als Tabelle formatiert ausgeben

    Gruß


  • Antwort noch nicht bewertet
    Antwort 12 von notmysql vom 03.10.2017, 21:46 Mißbrauch, Beleidigungen und Blödsinn den Moderatoren melden

    }
    ist weg;-D


    Antwort noch nicht bewertet
    Antwort 13 von Noahsraven vom 08.10.2017, 20:35 Mißbrauch, Beleidigungen und Blödsinn den Moderatoren melden

    Hi

    @notmysql
    es sind MysQL5.6 und PHP5.6
    Aber da ich nach MySQL-Befehlen fragte, die ich in der MySQL-Shell ausführ,e sollte
    die PHP-Version wohl nebensächlich sein.
    Es sei denn ich benutze den PHPMyAdmin was ich auch gerne mal tue, dann könnts ne
    Rolle spielen.

    @computerschrat
    Was du da als Beispiel angibst ($result = mysql_query ...) ist php oder??
    schon deine erste Zeile gibt einen Fehler in der MySQL-Shell und im PHPMyAdmin aus.
    Obwohl der, nach deinen Angaben, von dir nicht getestete Teil stimmt:
    SELECT CONCAT(street, ' ', nr) as Strasse FROM win_player ORDER BY ID
    den nutzte ich ja bereits.

    naja, vielleicht sollte ich nicht so engstirnig sein und auch PHP nutzen

    MFG Noah's Raven


    Antwort noch nicht bewertet Als gute Antwort bewerten
    Antwort 14 von computerschrat vom 08.10.2017, 22:35 Mißbrauch, Beleidigungen und Blödsinn den Moderatoren melden

    Hallo Noah's Raven,

    ja, die Zuweisung $VARIABLENNAME = ... ist PHP. Ich war stillschweigend davon ausgegangen, dass du PHP benutzt. Das macht die Sache mit Zuweisung und Benutzung von Variablen einfacher. Übrigens, auch die Antowrt #11 vewendet PHP.

    Gruß
    computerschrat


    Antwort noch nicht bewertet Als gute Antwort bewerten
    Antwort 15 von Noahsraven vom 12.10.2017, 11:15 Mißbrauch, Beleidigungen und Blödsinn den Moderatoren melden

    Hi,

    (in Antwort 15 war ein Fehler habe Admin schon gebeten diese zu löschen.

    hatte eben noch einmal Zeit das ganze zu testen.

    also, ich habe es noch einmal mit nur MySQL versucht, und bin eigentlich nahe dran.

    INSERT INTO win_player_copy (Strasse) SELECT CONCAT(_Strasse, ' ',
    Hausnummer) AS Strasse FROM win_player_copy ORDER BY ID;

    erledigt genau das was ich will nur schreibt dieser Befehl das Resultat in neue
    Tabellenzeilen.

    so werden aus ca. 8500 Datensätzen ca. 17000 Datensätze.

    habe das Gefühl ich muss das mit UPDATE erledigen, habe damit aber noch weniger
    Erfolg.

    Hat noch jemand von euch eine Idee für nur MySQL?

    Grüße Noah's Raven


    Antwort noch nicht bewertet Als gute Antwort bewerten
    Antwort 16 von notmysql vom 12.10.2017, 13:22 Mißbrauch, Beleidigungen und Blödsinn den Moderatoren melden

    Ist schon eine lange Zeit als ich mich mit dem phpMyAdmin beschäftigte, aber eins war dabei immer wichtig.
    Und zwar falls irgendwelche Fragen zu beantworten waren, dann waren immer die Angaben wie:
  • phpMyAdmin Version
  • MySQL Version
  • DB Art (InnoDB, MyISAM etc.)
    dabei sehr hilfreich.
    Denn vieles ändert sich, also es kommen neue Sachen dazu oder werden welche weggelassen und daran wird es wohl liegen, dass die Lösung aus deinem Link (vom 2006) jetzt nicht wie gewünscht funktioniert.
    Vielleicht wenn du diese fehlenden Angaben machen wirst, wird sich hier einer finden der dir bei deinem Problem helfen kann.
    Also für die Wartezeit hier mal was zum phpMyAdmin.

    Zitat:
    so werden aus ca. 8500 Datensätzen ca. 17000 Datensätze.
    Sind das jetzt doppelte Einträge, also gleiche Einträge und unterschiedliche IDs?

    Was du als "nur" MySQL bezeichnest, ist etwas zu stark vereinfacht, dann eigentlich hast du hier mit zwei Sachen zu tun, dem phpMyAdmin und MySQL.
    MySQL der wo einzeln am Laufen ist, kann schon unterschiedliche Syntax bedürfen, ist mir damals aufgefallen.
    Selbst beim Zugriff auf dem phpMyAdmin vom Terminal aus und direkt auf dem, also um eine Abfrage zu realisieren, gab es Unterschiede.
    Persönlich denke ich, dass du dein Vorhaben nur über die Nutzung vom PHP realisieren kannst, da man so mehrere unabhängige Abfragen starten und diese dann nach belieben zusammen basteln/ausgeben kann.

    Viel Erfolg!


  • Antwort noch nicht bewertet
    Antwort 17 von Noahsraven vom 12.10.2017, 13:38 Mißbrauch, Beleidigungen und Blödsinn den Moderatoren melden

    Hi,

    @notmysql
    PHP- und MySQL-Version sind, wie oben schon einmal erwähnt, jeweils 5.6
    DB-Art ist MyISAM
    PHPmyAdmin-Version 4.2.12

    Zitat:
    Sind das jetzt doppelte Einträge, also gleiche Einträge und unterschiedliche
    IDs?

    Jain, Bei den vorhandenen Datensätzen hat der oben genannte INSERT INTO
    Befehl die Spalte Strasse leer gelassen und Neue angelegt bei denen nur die Spalte
    Strasse belegt ist.
    Der Index hat natürlich entsprechend weitergezählt.

    ABER . . .
    DAS IST JETZT NICHT MEHR WICHTIG DENN ICH HABE DIE LÖSUNG :D

    ich musste wirklich UPDATE nutzen und das SELECT vor dem CONCAT löschen.
    Und der ganze Rattenschwanz mit FROM etc. war auch überflüssig.

    Die Lösung lautet schlicht:

    UPDATE `win_player_copy` SET `Strasse` = CONCAT(_Strasse,' ',Hausnummer);


    Mann, das Leben/MySQL kann so einfach sein :D


    MFG Noah's Raven


    Antwort noch nicht bewertet Als gute Antwort bewerten
    Antwort 18 von notmysql vom 12.10.2017, 19:40 Mißbrauch, Beleidigungen und Blödsinn den Moderatoren melden

    Upps, tatsächlich hast du schon alles angegeben, sorry...
    Und schön, dass du es wie gewollt hinbekommen hast;-D

    Gruß


    Antwort noch nicht bewertet




    Antwort schreiben
        Bitte einen 'Nickname' wählen.
    Nickname:*
        (eMail-Adresse wird nicht veröffentlicht.)
    eMail:
    Nachricht: Ich möchte bei Antworten benachrichtigt werden.
        Hilfe zur Beitragsformatierung gibts [hier]
                       
    Antwort:*
      Die Nutzungsbedingungen habe ich gelesen und akzeptiert.

    MACHEN SIE IHRE WEBSITE ATTRAKTIVER
    Sie haben eine eigene Website und wollen Ihre Besucher auf den Supportnet-Service aufmerksam machen? Kopieren Sie einfach den Quellcode in Ihre Seite und jeder Besucher Ihrer Seite kann direkt auf die Supportnet-Datenbank zugreifen.

    My Supportnet


    SUCHE

    Gruppen im Forum
    Betriebsysteme
    Software
    Hardware
    Netzwerk
    Programmierung
    Sonstiges

    Impressum © 1997-2015 SupportNet
    Version: supportware 1.8.230E / 18.10.2010, Startzeit:Mon Oct 23 04:22:08 2017