Antworten auf deine Fragen:
Neues Thema erstellen

MySQL ausgabe in Whileschleife bearbeiten

MasterT

Nicht mehr ganz neu hier

Hallo,
ich stehe vor einem Problem. In einer While schleife spucke ich Informationen aus. Diese Informationen sind einem Hersteller zugeordnet. Die Artikel sind mit der id des Herstellers versehen so das man die Artikel dem Hersteller zuordnen kann. Nun möchte ich aber nicht die ID sehen sondern den Namen des Herstellers sehen, ohne eine neue Spalte in die SQL zu schreiben, da ich ja sonst die Performenc mit unnötig belaste. Kann mir da wer helfen?

PHP:
            while($row=mysql_fetch_object($result)) {
                echo'
                <tr onclick="openi(\'i\'); eintragen(\'idartikel\',\''.$row->id.'\'); eintragen2(\'artikelidtext\',\''.$row->artikelid.'\');">
                        <td>'.$row->anzahl.' / '.$row->lagerkapazitaet.'</td>
                        <td>'.$row->maße.'</td>
                        <td>'.$row->gewicht.'</td>
                        <td>'.$row->artikelid.'</td>
                        <td>'.$row->artikelname.'</td>
                        <td>'.$row->hersteller.'</td>
                        <td>'.$row->warengruppe.'</td>
                        <td>'.$row->lagerort.'</td>
                        <td>'.$row->bemerkung.'</td>
                </tr>';            
            }
 

Bertram_Heinrichs

Aktives Mitglied

AW: MySQL ausgabe in Whileschleife bearbeiten

Aber genau dafür ist SQL da. Dein selbstgeschriebener PHP-Code wird den Server garantiert mehr belasten, als der optimierte Ausführungsplan einer Database-Engine. Was du in SQL machen kannst, mach es auch in SQL!
 

Duddle

Posting-Frequenz: 14µHz

AW: MySQL ausgabe in Whileschleife bearbeiten

Falls ich dich richtig verstehe willst du einen einfachen JOIN machen. Die MySQL-Syntax dafür ist , Tutorials findest du per Google genügend.


Duddle
 

Bertram_Heinrichs

Aktives Mitglied

AW: MySQL ausgabe in Whileschleife bearbeiten

Join braucht man dazu gar nicht. Where-Klausel genügt. Und alles was man an Spalten nicht benötigt, sollte gleich gar nicht ins SQL-Statement rein.

Ich kanns jetzt nicht nachprüfen, aber auf meherer Tabellen kannst du mittels Aliase in einer Abfrage zugreifen. In etwas so:

mysql> select A.Artikelname, A.Anzahl, B.Herstellername
-> FROM tabelleArtikel A, tabelleHersteller B
-> WHERE A.Hersteller_ID = B.Hersteller_ID;
 
Zuletzt bearbeitet:

MasterT

Nicht mehr ganz neu hier

AW: MySQL ausgabe in Whileschleife bearbeiten

Hallo,
ne ich will kein JOIN (wobei ich mich mal damit beschäftigen müsste) sondern den Wert ID durch den Namen des Herstellers ersetzten (nur auf der Oberfläche). Da mehrere Artikel von unterschiedlichen Herstellern aufgerufen werden kommen mir keine Ideen wie man das machen könnte
 

Bertram_Heinrichs

Aktives Mitglied

AW: MySQL ausgabe in Whileschleife bearbeiten

Hallo,
ne ich will kein JOIN (wobei ich mich mal damit beschäftigen müsste) sondern den Wert ID durch den Namen des Herstellers ersetzten (nur auf der Oberfläche). Da mehrere Artikel von unterschiedlichen Herstellern aufgerufen werden kommen mir keine Ideen wie man das machen könnte

Hab ich doch gerade gepostet, wie das funktioniert. Ich nehme mal an, dass der Herstellername in einer anderen Tabelle ist, als die Artikeldaten.
 

Bertram_Heinrichs

Aktives Mitglied

AW: MySQL ausgabe in Whileschleife bearbeiten

Sorry, aber ein bisschen Willen zum Lernen solltest du schon mitbringen. SQL ist nicht schwer.
Und keiner kann hellsehen, wie deine Datenbank aufgebaut ist.
 

Duddle

Posting-Frequenz: 14µHz

AW: MySQL ausgabe in Whileschleife bearbeiten

mysql> select A.Artikelname, A.Anzahl, B.Herstellername
-> FROM tabelleArtikel A, tabelleHersteller B
-> WHERE A.Hersteller_ID = B.Hersteller_ID;
Ja, das ist ein kartesisches Produkt bzw. CROSS JOIN.

ich will kein JOIN [...] sondern den Wert ID durch den Namen des Herstellers ersetzten
Dafür brauchst du einen JOIN (oder eine [viel schlechtere] Lösung in PHP).


Duddle
 

MasterT

Nicht mehr ganz neu hier

AW: MySQL ausgabe in Whileschleife bearbeiten

Sorry, aber ein bisschen Willen zum Lernen solltest du schon mitbringen. SQL ist nicht schwer.
Und keiner kann hellsehen, wie deine Datenbank aufgebaut ist.

Denn Willen habe ich schon aber ich wenn ich nicht nachvollziehen kann was du meinst.

@Duddle
Leider habe ich keine Ahnung von JOINs. Ich hoffe ich finde dazu was bei google
 

MasterT

Nicht mehr ganz neu hier

AW: MySQL ausgabe in Whileschleife bearbeiten

Ich blicke da nicht durch. Überall steht es anders und zum Laufen gebracht kriege ich es auch nicht. Nicht mal eine einfache Abfrage funktioniert

PHP:
  $sql2=mysql_query("SELECT hersteller.name, warengruppe.name FROM hersteller, warengruppe ");
 

Duddle

Posting-Frequenz: 14µHz

AW: MySQL ausgabe in Whileschleife bearbeiten

Hast du eine interaktive MySQL-Oberfläche, z.B. phpMyAdmin? Damit kannst du dir anschauen, was deine SQL-Abfragen genau machen; experimentier ein bisschen dort rum, bevor du es in PHP umsetzt.

Das Grundprinzip bei solch einfachen JOINs ist aber recht fix erklärt: wenn du zwei Tabellen Foo und Bar verknüpfen willst, gibst du an wie die Daten zueinander in Beziehung gestellt werden sollen. Oder anders: was soll im Datensatz von Foo stehen, damit ein Datensatz aus Bar passt. Ein Beispiel:
Code:
Foo:
id | name
---------
2  | aaa
3  | bbb
7  | ccc

Bar:
id | foo_id
66 | 3
67 | 7
Ein Cross Join verknüpft jeden Datensatz mit jedem anderen:
Code:
SELECT * FROM Foo, Bar

Ergebnis:
2  | aaa  | 66  | 3
2  | aaa  | 67  | 7
3  | bbb  | 66  | 3
3  | bbb  | 67  | 7
7  | ccc  | 66  | 3
7  | ccc  | 67  | 7
Du siehst, hier hast du alle möglichen Kombinationen der Datensätze. Deshalb kannst du danach auch gezielt ausfiltern und damit ein gewünschtes Ergebnis erhalten:
Code:
SELECT * FROM Foo, Bar WHERE Foo.id = Bar.foo_id

Ergebnis:
3  | bbb  | 66  | 3
7  | ccc  | 67  | 7
Somit hast du alle notwendigen Informationen in einem Ergebnis-Datensatz.

Ein Cross Join ist aber nicht der effizienteste der verfügbaren Joins. Für den Anfang sollte es aber reichen. Die anderen Joins sind vom Prinzip her ähnlich. Du solltest dir die Effekte in einer interaktiven Datenbank-Oberfläche mal anschauen.


Duddle
 

MasterT

Nicht mehr ganz neu hier

AW: MySQL ausgabe in Whileschleife bearbeiten

Danke @ für deine Ausfürliche Erklärung!

Ok so Funktioniert es
PHP:
    $SQL = mysql_query("SELECT
    artikel.hersteller,
    hersteller.id,
    hersteller.name
    FROM hersteller, artikel
    WHERE artikel.hersteller=hersteller.id");
    while($row = mysql_fetch_assoc($SQL)){
         echo $row['name'];
     }
Wenn ich aber nun diesen Test in mein Script einzubauen funktioniert es nicht. Ich hab zwar jetzt verstanden was gemeint ist aber es läuft nicht

PHP:
        $sql="SELECT 
                artikel.id,
                artikel.artikelid,
                artikel.anzahl,
                artikel.lagerkapazitaet,
                artikel.maße,
                artikel.gewicht,
                artikel.artikelname,
                artikel.hersteller,
                artikel.warengruppe,
                artikel.lagerort,
                artikel.bemerkung.
                hersteller.id,
                hersteller.name 
            FROM artikel, hersteller WHERE artikel.hersteller=hersteller.id";
 

MasterT

Nicht mehr ganz neu hier

AW: MySQL ausgabe in Whileschleife bearbeiten

Ok habs nun endlich verstanden. Vielen Dank für eure Hilfe!
 
Zuletzt bearbeitet:
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Statistik des Forums

Themen
118.635
Beiträge
1.538.477
Mitglieder
67.559
Neuestes Mitglied
hanuta
Oben