php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Thema geschlossen
 
LinkBack Themen-Optionen Thema bewerten
Alt 15.06.2011, 13:02  
Neuer Benutzer
 
Registriert seit: 15.06.2011
Beiträge: 5
PHP-Kenntnisse:
Anfänger
jagr2510 ist in Verruf geraten
Standard Daten mehrerer Felder in ein Feld schreiben(z.B. pipegetrennt)

Hallo,

ich habe eine Prozedur geschrieben die mir pipegetrennte Werte aus einem Feld in meherere Felder eines Datensatzes schreibt. Die Prozedur ist ziemlich groß, enthält eine Schleife und viele Case Statements und noch eine Menge anderer Elemente.
Nun müsste ich das ganze Spiel umdrehen.
Es sollen also die Inhalte mehrere Felder in ein Feld pipegetrennt geschrieben werden.
Ein Beispiel.:

Ausganstabelle (Tabelle a):

| ID | Feld 1 | Feld 2 | Feld 3 | Feld 4 |
---- ------- ------- ------- --------
| 1 | a | b | c | d |

Resultat (Tabelle b):

| ID | Datafield |
----- ---------
| 1 | a|b|c|d |

Lässt sich das relativ einfach darstellen, oder muss ich hierfür wieder einen zweiseiter Code schreiben?

Geändert von jagr2510 (15.06.2011 um 13:03 Uhr). Grund: unübersichtlich
jagr2510 ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 15.06.2011, 13:39  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

CONCAT, und fertig ...?
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline  
Alt 15.06.2011, 15:51  
Moderator
 
Registriert seit: 06.06.2008
Beiträge: 4.945
PHP-Kenntnisse:
Fortgeschritten
Wolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer Anblick
Wolla eine Nachricht über ICQ schicken
Standard

Oder eine ordentliche Datenstruktur wählen. Das sieht doch arg nach Designfehler aus.
__________________
Warum denkt mein Hund eigentlich immer dann, wenn es an der Tür klingelt, es sei für ihn?
Wolla ist offline  
Alt 16.06.2011, 10:49  
Neuer Benutzer
 
Registriert seit: 15.06.2011
Beiträge: 5
PHP-Kenntnisse:
Anfänger
jagr2510 ist in Verruf geraten
Standard

Also erst will ich mich mal bei euch für eure Ideen bedanken.
Es ist sehr wichtig das diese Struktur gepflegt wird. Es handelt sich dabei um keine gewöhnlliche Datenbank sondern um eine Interfacetabelle. Diese Tabelle dient als Schnittstelle und kommuniziert zwischen Shop und CRM. Klar ist die Programmierung der Schnittstelle mit dieser Struktur nicht gerade ellegant, aber dafür habe ich mehr oder weniger von einander unabhängige Systeme, die ich leichter ersetzen kann.

P.S. ich werde es mal mit der Concat versuchen, wenn ich damit allerdings an die Grenzen stoße werde ich wieder mit Schleifen und Cases arbeiten.

Geändert von jagr2510 (16.06.2011 um 10:55 Uhr).
jagr2510 ist offline  
Alt 16.06.2011, 14:36  
Neuer Benutzer
 
Registriert seit: 15.06.2011
Beiträge: 5
PHP-Kenntnisse:
Anfänger
jagr2510 ist in Verruf geraten
Standard #1242 - Subquery returns more than 1 row

Ich habe das Problem fast gelöst, allerdings wird in meiner Funktion nur ein Datensatz angesprochen.

Hier die Funktion:

CREATE PROCEDURE Sageorders()

BEGIN

INSERT INTO interface(actiontype, sender, acceptor, status, datafield)
VALUES(103,'erp','shop','-',(SELECT CONCAT_WS("|", orde_shoporderid, orde_status)
FROM Sageorders));

END;

Folgender Fehler tritt auf, weil nur ein Datensatz der Tabelle Sageorders angesprochen werden kann, aber mehrere vorhanden sind:

#1242 - Subquery returns more than 1 row

Wie schreibt man die Concat Funktion, so das alle Datensätze
der Tabelle Sageorders angesprochen und zusammengefasst werden?
jagr2510 ist offline  
Alt 16.06.2011, 19:39  
Neuer Benutzer
 
Registriert seit: 28.01.2011
Beiträge: 23
PHP-Kenntnisse:
Anfänger
raiguen ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Wie schreibt man die Concat Funktion, so das alle Datensätze
der Tabelle Sageorders angesprochen und zusammengefasst werden?
Wenn ich das richtige interpretiere, dann sollen die Felder orde_shoporderid und orde_status ALLER Datensätze in einem String zusammengefasst werden?
Wenn dem so ist, dann ist GROUP_CONCAT der Freund und Helfer
Code:
GROUP_CONCAT(orde_shoporderid, "|", orde_status SEPARATOR "|")

Geändert von raiguen (16.06.2011 um 19:43 Uhr).
raiguen ist offline  
Alt 16.06.2011, 21:08  
Erfahrener Benutzer
 
Registriert seit: 21.12.2009
Beiträge: 415
PHP-Kenntnisse:
Fortgeschritten
G.Schuster ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Code:
CREATE PROCEDURE Sageorders()
BEGIN
 
INSERT INTO `interface`
      (`actiontype`, `sender`, `acceptor`, `status`, `datafield`)
SELECT
        103,         'erp',    'shop',     '-',       CONCAT_WS('|', `orde_shoporderid`, `orde_status`)
FROM `Sageorders`;
END;
Ein Blick in die Doku verursacht übrigens keine Schmerzen.
__________________
actra.development - Schwabstr. 2 - 70825 Münchingen
www.actra.de/velopment/ - eMail: php.de@actra.de
Zend Certified Engineer for PHP5
G.Schuster ist offline  
Alt 17.06.2011, 10:24  
Neuer Benutzer
 
Registriert seit: 15.06.2011
Beiträge: 5
PHP-Kenntnisse:
Anfänger
jagr2510 ist in Verruf geraten
Standard

Ich habe das Problem gelöst! Ich kann ja auch fixe Werte im SELECT verwenden.

INSERT INTO interface (actiontype, sender, acceptor, STATUS, datafield)
SELECT 103, 'erp', 'shop', '-', CONCAT_WS('|', orde_shoporderid, orde_status)
FROM Sageorders

Manche Leute machen sich das Leben ganz schön einfach. Auf die Doku verweisen kann jeder. Besser ist es, sich in diesem Fall den Beitrag zu sparen.

Danke raiguen für deinen konstruktiven Beitrag.
jagr2510 ist offline  
Alt 17.06.2011, 13:19  
Erfahrener Benutzer
 
Registriert seit: 21.12.2009
Beiträge: 415
PHP-Kenntnisse:
Fortgeschritten
G.Schuster ist zur Zeit noch ein unbeschriebenes Blatt
Standard

DU hast das Problem gelöst?
Was hab' ich denn oben gepostet?
1 zu 1 genau das, was du jetzt angibst...

Zitat:
Zitat von jagr2510 Beitrag anzeigen
Manche Leute machen sich das Leben ganz schön einfach.
Dito. Sie lesen nur das, was sie lesen wollen.
__________________
actra.development - Schwabstr. 2 - 70825 Münchingen
www.actra.de/velopment/ - eMail: php.de@actra.de
Zend Certified Engineer for PHP5
G.Schuster ist offline  
Alt 17.06.2011, 13:51  
Erfahrener Benutzer
 
Benutzerbild von wolf29
 
Registriert seit: 17.03.2010
Beiträge: 1.833
PHP-Kenntnisse:
Fortgeschritten
wolf29 wird schon bald berühmt werdenwolf29 wird schon bald berühmt werden
Standard

Zitat:
Ich habe das Problem gelöst! Ich kann ja auch fixe Werte im SELECT verwenden.
Du hast einfach nur die Lösung von G.Schuster abgeschrieben - mehr nicht!

Zitat:
Manche Leute machen sich das Leben ganz schön einfach. Auf die Doku verweisen kann jeder. Besser ist es, sich in diesem Fall den Beitrag zu sparen
Hat er ja nicht...fast schon dreist. Doku ist stets die erste Anlaufstelle, die Du ja anscheinend vor Eröffnung des Beitrags nicht in Anspruch genommen hast!

mfg Wolf29
__________________
while (!asleep()) sheep++;

Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.
wolf29 ist offline  
Thema geschlossen


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] CSV einlesen, Daten abgleichen und Werte ausgeben mastertnt PHP Tipps 2009 21 21.07.2009 16:12
[Erledigt] Tabelle automatisch generieren scheffie PHP Tipps 2009 18 07.06.2009 16:17
Ein feld, mehrere Daten... Creeping Datenbanken 1 11.04.2009 17:40
Registrierte User sollen ihre Daten ändern können 54ch4 PHP Tipps 2009 17 14.03.2009 14:29
[Erledigt] Limit auf Ergebnissumme mehrerer Tabellen Frank Datenbanken 8 02.09.2008 11:33
Daten von Datenbank durch Klick in Feld holen Taktaky PHP Tipps 2008 23 22.08.2007 17:20
Select feld mit Daten füttern M-Arens PHP Tipps 2006 12 08.06.2006 12:38
Daten eintragen und auslesen Rettungsdackel Datenbanken 0 14.09.2005 16:29
Array nach Feld sortieren PHP Tipps 2005-2 2 07.08.2005 23:00
Zufallausgabe mehrerer Daten aus einem Array PHP Tipps 2005 9 06.03.2005 19:17
array_push nur in begrenzter Anzahl ausführen ? PHP Tipps 2004 2 07.09.2004 09:05

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
#1242 - subquery returns more than 1 row mehrere ergebnisse ausgeben, php feld beschreiben, ein feld mehrere, subquery returns more than one row concat_ws, wann schreibe z. b und wann zum beispiel, datenbank mehrere daten in ein feld, berichtsfeld mit daten aus mehreren tabellenfeldern, mehrere daten in eingabefeld schreiben html, mehrere felder in ein feld schreiben lassen, php feld in feld, daten automatisch in feld schreiben php html

Alle Zeitangaben in WEZ +2. Es ist jetzt 12:11 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum