php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 25.11.2011, 04:12  
Neuer Benutzer
 
Benutzerbild von Netcrash
 
Registriert seit: 23.07.2009
Beiträge: 18
PHP-Kenntnisse:
Anfänger
Netcrash befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] fbSQL/MySQL Tabelle verknüpfen und mehrere Spalten zusammenfügen

Hallo,

leider war ich bei der Suche nicht erfolgreich, oder ich hab die Lösung nicht verstanden.

Also es geht um folgendes:
Ich habe eine Firebird-Datenbank in der ich zwei Tabellen verknüpfen will, dies funktioniert auch einwandfrei.

Tabelle 1 = EINSAETZE | Tabelle 2 = EM_EINSAETZE

Hier der Query:

Code:
Select a.STATUS, a.EINSATZNUMMER, b.RUFNAME, a.MELDUNG,  b.EINSATZNUMMER, b.STATUS1
from EINSAETZE a, EM_EINSAETZE b 
where a.EINSATZNUMMER = b.EINSATZNUMMER and a.STATUS = 'Alarmiert' and b.STATUS1 is NULL
Die Ausgabe ist wie folgt:

STATUS | EINSATZNUMMER | RUFNAME | MELDUNG ...
Alarmiert | 20110001 | 01-99-01 | TEXT ...
Alarmiert | 20110001 | 01-99-02 | TEXT ...

Nun würde ich gerne diese Ausgabe erzielen:

STATUS | EINSATZNUMMER | RUFNAME | MELDUNG ...
Alarmiert | 20110001 | 01-99-01, 01-99-02 | TEXT ...

Ist dies mit einer Query machbar?

EDIT:

Bei der Versuch es so zu lösen, bekam ich nur eine Fehlermeldung:

Code:
Select a.STATUS, a.EINSATZNUMMER, a.MELDUNG, b.STATUS1, b.RUFNAME as EMITTEL,
GROUP_CONCAT(EMITTEL)
from EINSAETZE a
LEFT JOIN
EM_EINSAETZE b on b.EINSATZNUMMER = a.EINSATZNUMMER
where a.STATUS = 'Alarmiert' and b.STATUS1 is NULL
Group by b.EINSATZNUMMER
Fehlermeldung:
Code:
Engine Error (code = 335544569):
Dynamic SQL Error.
SQL error code = -804.
Function unknown.
GROUP_CONCAT.

SQL Error (code = -804):
An error was found in the application program input parameters for the SQL statement.
Vielen Dank

Geändert von Netcrash (25.11.2011 um 04:44 Uhr).
Netcrash ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 25.11.2011, 08:02  
Erfahrener Benutzer
 
Registriert seit: 28.05.2008
Beiträge: 2.094
PHP-Kenntnisse:
Fortgeschritten
rudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nett
Standard

http://www.firebirdfaq.org/faq310/
__________________
++++ Wieder einer ins Netz gegangen: Phishers Fritz zufrieden ++++
Blog
rudygotya ist offline   Mit Zitat antworten
Alt 27.11.2011, 14:08  
Neuer Benutzer
 
Benutzerbild von Netcrash
 
Registriert seit: 23.07.2009
Beiträge: 18
PHP-Kenntnisse:
Anfänger
Netcrash befindet sich auf einem aufstrebenden Ast
Standard

Hmm, hab ich denn bei der Ausgabe mit PHP eine Chance das so zu filtern, das man die Felder dann zusammenfügen kann?

PHP-Code:
<?php require '\data\setup.php';

$stmt="Select DISTINCT a.STATUS, a.EINSATZNUMMER, a.MELDUNG, a.STICHWORT_KLARTEXT, a.SONDERSIGNAL, a.OBJEKTNAME, a.STRASSE, a.HAUSNUMMER, a.ORT, b.RUFNAME, a.STATION, b.EINSATZNUMMER, b.STATUS1 
from EINSAETZE a, EM_EINSAETZE b 
where a.EINSATZNUMMER = b.EINSATZNUMMER and a.STATUS = 'Alarmiert' and b.STATUS1 is NULL order by a.EINSATZNUMMER DESC"

$query ibase_prepare($stmt); 
$rs=ibase_execute($query); 
while(
$row ibase_fetch_row($rs))
{
$sig $row['4'];
$ort utf8_encode($row[8]);
$strasse utf8_encode($row[6]);

?>

//ABFRAGE

<?php
}
ibase_free_result($rs); 
ibase_free_query($query);
ibase_close($dbh); 
?>
Danke

Geändert von Netcrash (27.11.2011 um 14:16 Uhr).
Netcrash ist offline   Mit Zitat antworten
Alt 28.11.2011, 09:20  
Erfahrener Benutzer
 
Registriert seit: 01.09.2010
Beiträge: 4.561
PHP-Kenntnisse:
Fortgeschritten
eagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Mensch
Standard

Klar .. PHP hat einen eigenen Concat-Operator ... den Punkt

PHP-Code:
$ergebnis=$string1.$string2
- hängt die beiden Strings direkt hintereinander ...
__________________
"Irren ist männlich", sprach der Igel und stieg von der Drahtbürste
eagle275 ist offline   Mit Zitat antworten
Alt 28.11.2011, 14:51  
Neuer Benutzer
 
Benutzerbild von Netcrash
 
Registriert seit: 23.07.2009
Beiträge: 18
PHP-Kenntnisse:
Anfänger
Netcrash befindet sich auf einem aufstrebenden Ast
Standard

@eagle275: Die Lösung funktioniert leider nicht.

In der zwischen Zeit habe ich herausgefunden wie mal LIST() in Firebird dafür nutzen kann, allerdings ist die Ausgabe in PHP falsch.

PHP-Code:
Select a.STATUSa.EINSATZNUMMERa.MELDUNGa.STICHWORT_KLARTEXTa.OBJEKTNAMEa.STRASSE
a.HAUSNUMMERa.ORTa.SONDERSIGNAL,
(
select list(RUFNAME' ')  from EM_EINSAETZE b where a.EINSATZNUMMER b.EINSATZNUMMER) as emittel,
(
select list(STATUS1' ')  from EM_EINSAETZE b where a.EINSATZNUMMER b.EINSATZNUMMER) as status_1
from 
EINSAETZE a
where a
.STATUS 'Alarmiert'
order by a.EINSATZNUMMER DESC 
Die Ausgabe in Firebird Maestro ist richtig:


Und die PHP-Ausgabe schaut so aus:
PHP-Code:
stdClass Object
(
    [
STATUS] => Alarmiert
    
[EINSATZNUMMER] => 20110007
    
[MELDUNG] => Testeinsatz
    
[STICHWORT_KLARTEXT] => ---
    [
OBJEKTNAME] => ---
    [
STRASSE] => ---
    [
HAUSNUMMER] => 3
    
[ORT] => ---
    [
SONDERSIGNAL] => 1
    
[EMITTEL] => 0x0000000200000000  //Hier müssten die Fahrzeuge stehen (2 Fzg)
    
[STATUSES] => 0x0000000100000000 //Hier Datum & Uhrzeit des Ausrückens
)
stdClass Object
(
    [
STATUS] => Alarmiert
    
[EINSATZNUMMER] => 20110006
    
[MELDUNG] => Materialtransport zur ---
    [
STICHWORT_KLARTEXT] => S-MH
    
[OBJEKTNAME] => UHS 2
    
[STRASSE] => ---
    [
HAUSNUMMER] => 
    [
ORT] => ---
    [
SONDERSIGNAL] => 0
    
[EMITTEL] => 0x0000000300000000 //Hier müsste das Fahrzeug stehen (1 Fzg)
    
[STATUSES] => 

Wieso macht er es in FB Maestro und nicht in PHP kann auch leider kein Mustererkennen, jemand eine Idee wie ich dort auch den Klartext angezeigt bekomme?

Danke
Netcrash ist offline   Mit Zitat antworten
Alt 28.11.2011, 14:59  
Erfahrener Benutzer
 
Registriert seit: 01.09.2010
Beiträge: 4.561
PHP-Kenntnisse:
Fortgeschritten
eagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Mensch
Standard

hm - falls dir der Klartext da fehlt, dann wohl, weil du einen weiteren Fremdschlüssel-Bezug vergessen hast ....

anstelle dieser wurschtel_group_concat-Lösung - wie wäre es mit einem richtigen Left JOIN und 2 Ergebnissen für den Fall mit 2 Fahrzeugen ?
__________________
"Irren ist männlich", sprach der Igel und stieg von der Drahtbürste

Geändert von eagle275 (28.11.2011 um 15:03 Uhr).
eagle275 ist offline   Mit Zitat antworten
Alt 28.11.2011, 15:06  
Neuer Benutzer
 
Benutzerbild von Netcrash
 
Registriert seit: 23.07.2009
Beiträge: 18
PHP-Kenntnisse:
Anfänger
Netcrash befindet sich auf einem aufstrebenden Ast
Standard

Okay, wie bekomme ich den fehlenden Fremdschlüssel denn raus? Denn als Schlüssel benutze ich das Feld a.EINSATZNUMMER welches in der Einsatztabelle steht und das b.EINSATZNUMMER welches bei den Einsatzmitteln steht, damit ist eine eindeutige Identifizierung ja möglich.
Würde das ganze ja eigentlich gerne in MySQL machen, aber die Firebird Datenbank ist leider vorgegeben und nicht änderbar..
Netcrash ist offline   Mit Zitat antworten
Alt 28.11.2011, 15:11  
Erfahrener Benutzer
 
Registriert seit: 01.09.2010
Beiträge: 4.561
PHP-Kenntnisse:
Fortgeschritten
eagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Mensch
Standard

ich glaub meine Bezeichnung mit "Fremdschlüssel" war ungenau .. versuch mal bitte im Firebird-Handbuch oder in der Beschreibung zum PHP-Treiber herauszufinden, wie du an die Information hinter diesen 0x0000003 irgendwas kommst ... das sieht mir irgendwie aus wie ein Ressource-Bezeichner oder eben ein Fremdschlüssel .. mag mich ja irren .... aber das muss doch irgendwo dokumentiert sein
__________________
"Irren ist männlich", sprach der Igel und stieg von der Drahtbürste
eagle275 ist offline   Mit Zitat antworten
Alt 28.11.2011, 15:13  
Neuer Benutzer
 
Benutzerbild von Netcrash
 
Registriert seit: 23.07.2009
Beiträge: 18
PHP-Kenntnisse:
Anfänger
Netcrash befindet sich auf einem aufstrebenden Ast
Standard

Okay ich werde mal sehen was ich finde, Danke. Und melde mich wenn ich was gefunden habe
Netcrash ist offline   Mit Zitat antworten
Alt 28.11.2011, 15:24  
Erfahrener Benutzer
 
Registriert seit: 01.09.2010
Beiträge: 4.561
PHP-Kenntnisse:
Fortgeschritten
eagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Mensch
Standard

Zitat:
Zitat von firebird_reference
LIST()

Available in: DSQL, PSQL

Added in: 2.1

Changed in: 2.5

Description: LIST returns a string consisting of the non-NULL argument values in the group, separated either by a comma or by a user-supplied delimiter. If there are no non-NULL values (this includes the case where the group is empty), NULL is returned.

Result type: BLOB

Syntax:

LIST ([ALL | DISTINCT] expression [, separator])

*

ALL (the default) results in all non-NULL values to be listed. With DISTINCT, duplicates are removed, except if expression is a BLOB.
*

In Firebird 2.5 and up, the optional separator argument may be any string expression. This makes it possible to specify e.g. ascii_char(13) as a separator. (This improvement has also been backported to 2.1.4.)
*

The expression and separator arguments support BLOBs of any size and character set.
*

Date/time and numerical arguments are implicitly converted to strings before concatenation.
*

The result is a text BLOB, except when expression is a BLOB of another subtype.
*

The ordering of the list values is undefined.
- das heißt du bekommst keinen String, sondern ein BLOB - ich vermute, du musst ähnlich wie bei Oracle den Blob noch "extra" auslesen ...

Zitat:
Zitat von PHP_Manual
# ibase_blob_add — Add data into a newly created blob
# ibase_blob_cancel — Cancel creating blob
# ibase_blob_close — Close blob
# ibase_blob_create — Create a new blob for adding data
# ibase_blob_echo — Output blob contents to browser
# ibase_blob_get — Get len bytes data from open blob
# ibase_blob_import — Create blob, copy file in it, and close it
# ibase_blob_info — Return blob length and other useful info
# ibase_blob_open — Open blob for retrieving data parts
- schau dich da mal um, da gibts Funktionen zum auslesen eines Blobs
__________________
"Irren ist männlich", sprach der Igel und stieg von der Drahtbürste
eagle275 ist offline   Mit Zitat antworten
Antwort


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] Intertabellarische Berechnungen, wie? dave303 Datenbanken 13 05.03.2010 11:58
Frage: Tabelle dynamisch mit 3 Spalten füllen PHPMann85 Scriptbörse 4 01.03.2010 17:37
[Erledigt] Tabelle verknüpfen &quot;on .. like ..&quot; Leinberger Datenbanken 6 07.08.2009 01:19
Tabelle - Quadratische Spalten ibeg HTML, Usability und Barrierefreiheit 16 06.08.2009 17:28
Mehrere Spalten in einer Zeile einer 2 Tabelle ketchup PHP Tipps 2009 5 28.04.2009 07:49
Dynamische Tabelle 4 Spalten samson84 PHP Tipps 2009 50 11.04.2009 19:59
[Erledigt] Tabelle über Spalten sortieren vtx-rider PHP Tipps 2008 18 11.04.2009 17:14
[Erledigt] Mehrere Spalten und Zeilen aus Tabelle in einem Array speichern shivana Datenbanken 1 04.11.2008 12:07
Tabelle mit while nach 4 spalten zur nächsten zeile Supeede PHP Tipps 2008 6 10.05.2008 09:46
Tabelle erweitern, Spalten hinzufügen GeorgM Datenbanken 3 24.11.2004 17:06
Erstellen spalten in MySQL tabelle Datenbanken 7 14.11.2004 19:53
[Erledigt] [OT] besser eine Tabelle mit mehr Spalten oder aufteilen ? Datenbanken 1 22.10.2004 17:26
Multiplikation zweier Spalten innerhalb einer Tabelle Datenbanken 10 16.09.2004 14:56
Addition aller Spalten in einer Tabelle TheSkaterFriend Datenbanken 4 04.07.2004 13:27
HILFE: Column count doesn't match value count at row 1 Datenbanken 17 12.06.2004 16:45

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
mysql tabellen verknüpfen, mysql zeilen in spalten zusammenfassen, mysql- datenbank zwei spalten in eine spalte verknüpfen, ajax mysql tabellen verknüpfen, oracle tabelle spalten zusammenfassen, sql zwei spalten zusammenfügen, mehrere tabellenfelder zusammenfassen und text verketten, sql zeilen zu spaöten verbinden, mysql zeilen verknüpfen, felder verschiedener tabellen verknüpfen mysql, mysql spaltenwerte in selber tabelle zusammenführen, firebird syntax felder verbinden, zwei spalten in der abfrage zusamenlegen php concat, mysql spalten zusammenführen, mysql mehrere tabellen zeilen zusammenfassen, oracle sql spalten zusammenfügen, sql mehrere spalten verbinden isnull, 2 zellen verbinden und sortieren mysql, einsatznummer in der alarmierung rausfiltern, fbsql.so

Alle Zeitangaben in WEZ +2. Es ist jetzt 15:41 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