php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2005-2

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 16.08.2005, 10:15  
Lia
Erfahrener Benutzer
 
Registriert seit: 22.11.2004
Beiträge: 241
Lia
Standard drei Spalten einer Tabelle zusammenfügen

Hallo,

ich habe ein Problem und komme einfach nicht voran. Ich habe in einer DB-Tabelle drei Spalten und möchte diese drei Spalten zusammenfügen und ausgeben lassen. Es kann sein, dass in den Spalten auch einmal der selbe Wert sein kann, und es soll dann gruppiert werden.
Wie kann ich das machen? Kann ich die ganzen Werte der Spalten in ein Array schreiben, dann gruppieren und wieder ausgeben lassen??
Lia ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 16.08.2005, 10:38  
Erfahrener Benutzer
 
Registriert seit: 16.03.2005
Beiträge: 421
Niedi
Niedi eine Nachricht über ICQ schicken
Standard

http://tut.php-q.net/mysql-select.html

?
Niedi ist offline  
Alt 16.08.2005, 11:13  
Lia
Erfahrener Benutzer
 
Registriert seit: 22.11.2004
Beiträge: 241
Lia
Standard

Danke für die Antwort, doch leider ist es nicht das, wonach ich suche.
Ich versuche, mein Problem noch einmal zu schildern. Ich habe eine Tabelle, in der mehrere Spalten sind. Darunter sind 3 Spalten für 3 Namen. Das Ziel soll es sein, die Namen später in ein Select-Menü auszugeben. Deswegen kann ich nur 3 Spalten für die Namen anlegen, da jeder Name einzeln stehen muss. Es kann also sein, dass in einem Datensatz zwei Namen stehen, in einem anderen drei oder eins. Nun möchte ich aber in dem Selcect-Menü alle Namen ausgeben lassen, doch ohne Dopplung (die ja entstehen kann, wenn in einem Datensatz in dem ersten Namensfeld ein Name eingegeben wird und in einem anderen DS z.B. im zweiten Feld derselbe Name eingegeben wird)..
Ich hoffe, ich habe mich nun etwas verständlicher ausgedrückt.
Kann mir nun jemand weiterhelfen??
Lia ist offline  
Alt 16.08.2005, 11:37  
Erfahrener Benutzer
 
Registriert seit: 16.03.2005
Beiträge: 421
Niedi
Niedi eine Nachricht über ICQ schicken
Standard

najo wieso vergleichst du dann die werte nicht einfach auf gleichheit beim herausholen aus der db?

und anschließend nach dem vergleichen kannst sie ja weiterverarbeiten

fehlt es an der logik oder am programmiertechnischen?
Niedi ist offline  
Alt 16.08.2005, 11:40  
Lia
Erfahrener Benutzer
 
Registriert seit: 22.11.2004
Beiträge: 241
Lia
Standard

Irgendwie fehlt es an der Logik und teilweise auch am programmiertechnischen...
Ich hole also ersteinmal die Daten per SELECT aus der DB. Und dann will ich sie eben gruppieren, doch daran scheitert es..
Kannst du mir dabei weiterhelfen, wie ich auf gleichheit überprüfe?
Lia ist offline  
Alt 16.08.2005, 12:31  
Lia
Erfahrener Benutzer
 
Registriert seit: 22.11.2004
Beiträge: 241
Lia
Standard

Kann mir keiner weiterhelfen?
Ich möchte eigentlich nur folgendes machen:

SELECT name1 as name, name2 as name, name3 as name FROM tabelle GROUP BY name

Doch so funktioniert es nunmal nicht. Deswegen dachte ich, ich speicher die ganzen Namen in ein Array. Doch hier komme ich auch nicht weiter..
Lia ist offline  
Alt 16.08.2005, 12:34  
Erfahrener Benutzer
 
Registriert seit: 05.07.2004
Beiträge: 1.476
DiBo33
Standard

Zitat:
Darunter sind 3 Spalten für 3 Namen. Das Ziel soll es sein, die Namen später in ein Select-Menü auszugeben. Deswegen kann ich nur 3 Spalten für die Namen anlegen, da jeder Name einzeln stehen muss. Es kann also sein, dass in einem Datensatz zwei Namen stehen, in einem anderen drei oder eins.
Schrottiges Tabellendesign.
http://de.wikipedia.org/wiki/Normalisierung_(Datenbank)

Zitat:
Ich hole also ersteinmal die Daten per SELECT aus der DB. Und dann will ich sie eben gruppieren, doch daran scheitert es..
Mit einem korrekten Tabellendesign ist sogar SQL selbst in der Lage zu gruppieren.
DiBo33 ist offline  
Alt 16.08.2005, 12:48  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Nur mit einer Abfrage wirst du diese Problem - verusacht durch fragwürdiges DB-Design - nicht in den Griff bekommen. Es ist zwar möglich mehreren Attributen den gleichen alias zuzuweisen, aber in PHP hast du dann nur noch Zugriff auf den letzten Wert (ausser du brauchst mysql_fetch_row(), aber das löst dein Problem auch nicht). Deshalb würde ich die Daten alle in einen Array einlesen, un diesen dann weiterverwenden:
PHP-Code:
<?php
$sql 
"SELECT name1, name2, name3 
           FROM tabelle"
;
$res mysql_query($res) or die(mysql_error());
$werte = array();
while(
$row mysql_fetch_row($res)){
    for(
$i 0;$i 3;$i ++){
        
$werte[] = $row[$i];
    }
}
$werte array_unique($werte);  // Doppelte eliminieren
sort($werte);
?>
Diesen Array kannst du nun für deine Auswahlliste verwenden.
__________________
Gruss
L
lazydog ist offline  
Alt 16.08.2005, 12:49  
Lia
Erfahrener Benutzer
 
Registriert seit: 22.11.2004
Beiträge: 241
Lia
Standard

Tja, vielen Dank. Ich weiß auch, dass SQL selbst gruppieren kann. Doch leider ist die Tabelle nunmal so aufgebaut und ich sie nicht so einfach umbauen, da mit dieser Tabelle viele andere Tabellen in Verbindung stehen.
Deswegen habe ich ja nun gefragt, ob es da eine Lösung geben kann...
Lia ist offline  
Alt 16.08.2005, 12:51  
Erfahrener Benutzer
 
Registriert seit: 05.07.2004
Beiträge: 1.476
DiBo33
Standard

Dann schau dir UNION an, aber dabei hast du das Problem der Differenzierung in welchem Feld der Name steht.
DiBo33 ist offline  
 


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
Tabelle mit while nach 4 spalten zur nächsten zeile Supeede PHP Tipps 2008 6 10.05.2008 09:46
Wie viele Spalten kann eine Datenbank Tabelle den tragen`? tomtaz Datenbanken 11 20.05.2006 20:22
[Anfänger]: maximale anzahl an spalten in einer tabelle? moose Datenbanken 1 22.04.2006 22:19
Tabelle -> 2 Spalten -> aufteilen lichtscheu PHP Tipps 2006 10 23.03.2006 21:24
Welche Tabelle bzw. Spalten gibt es? PHP Tipps 2006 7 08.02.2006 11:52
Wie kann ich die Spalten einer Tabelle auslesen ? Datenbanken 0 31.10.2005 00:29
Spalten einer Tabelle mit Eigenschaften auslesen GELight PHP Tipps 2005-2 6 25.07.2005 13:14
[Erledigt] SQL Tabelle - Spalten verschieben - PHPMyAdmin Datenbanken 6 12.07.2005 17:00
Spalten Dynamisch als Tabelle anzeigen lassen(Spalten ausl.) Cyberbob_at_tot PHP Tipps 2005-2 6 04.06.2005 22:55
Anzahl der Spalten aus einer anderen Tabelle Buhmann Datenbanken 0 16.04.2005 23:50
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
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
http://www.php.de/php-tipps-2005-2/29244-drei-spalten-einer-tabelle-zusammenfuegen.html, php tabelle mit 3 spalten, sql spalten zusammenfassen, sql server 2005 spalten zusammenfügen, tabelle aneinanderhängen sql, werte aus 3 spalten in einer spalte gruppieren, sql multiplikation über spalte, sql 3 spalten zu einer zusammenführen, sql spalten zusammenfügen, sql server 2005 spalten zusammensetzen, sql 3 spalten werte zu einem wert zusammenfassen, sql aus 3 spalten einen wert zusammenfügen, sql select drei spalten zusammen führen, zwei spalten in einer zusammenführen sql, sql daten aus zwei spalten zusammenfügen, sql2005 spalten zusammenfügen, sql einträge in einer spalte vereinen, php werte von 2 spalten zusammenfügen, sql 3 spalten zusammenfassen, mysql selbe zusammenfügen

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

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.