php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 25.11.2011, 12:01  
Neuer Benutzer
 
Registriert seit: 24.11.2011
Beiträge: 13
PHP-Kenntnisse:
Anfänger
nsm_c befindet sich auf einem aufstrebenden Ast
Standard Select über 2-3 Tabellen

Hallo

ich habe ein kleines Problem mit meine SQL Abfrage. und zwar möchte ich in einer Tabelle folgendes Ausgeben.

Code:
Name  |  Email  |   Bestellung 1  |  Bestellung 2  |  Bestellung 3 |  usw.
Max M | m@m.de |  Tisch          | Lampe          |     stuhl       |
Name und Email befinden sich in der Tabelle "users". Die Namen der Produkte befindet sich in der Tabelle "products", die Bestellungen befinden sich mit den Feldern, User ID, und Product ID´s in der Tabelle "orders".

Unter anderem möchte ich jeden Benutzer ausgeben, wenn er eine Bestellung hat sollen die Namen der Bestellungen ausgegeben werden, wenn nicht sollen die Spalten in der Tabelle mit einem "X" versehen werden.

Wie muss der Select befehl aussehen, das ich Daten von 2 Tabellen ausgeben kann.?

mein Construct sieht im moment so aus, aber da gibt er mir doppelt und dreifach alles aus.

PHP-Code:
<?php
$query     
= ("SELECT * FROM users, products ORDER BY name ASC") or die (mysql_error());
$res mysql_query($query);
        echo 
"<table border=\"1\" cellpadding=\"2px\">";
        echo 
"<tr>";
        echo 
"<td>Name</td><td>Email</td><td>Bestellung 1</td><td>Bestellung 2</td><td>Bestellung 3</td><td>Bestellung 4</td></tr>";
        
        while(
$row mysql_fetch_array($res)) {
            echo 
"<tr>";
            echo 
"<td>"$row['name']. "</td>";
            echo 
"<td>"$row['email']."</td>";
            echo 
"<td>"$row['title']."</td>";
?>
nsm_c 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, 12:28  
Erfahrener Benutzer
 
Registriert seit: 03.08.2010
Beiträge: 1.140
PHP-Kenntnisse:
Anfänger
hausl wird schon bald berühmt werdenhausl wird schon bald berühmt werden
Standard

http://aktuell.de.selfhtml.org/artik...nbanken/joins/

Wenn Du Bestellung1, Bestellung2 etc.. tatsächlich als Spalten hast (was ist wenn der 20 mal bestellt ??) ist das vermutlich ein falsches DB-Design.. Schau dir auch zum Thema Normalisierung das - zB:
http://www.peterkropff.de/site/mysql/normalisierung.htm

[edit]
Und das ... or die() ... gehört nicht hinter die Variable die Du mit der query fütterst, sondern hinter die Funktion wo Du die query in die DB schickst
PHP-Code:
// nein
$query     = ("SELECT * FROM users, products ORDER BY name ASC") or die (mysql_error()); 

// ja
$query     = ("SELECT * FROM users, products ORDER BY name ASC");
$res mysql_query($query) or die (mysql_error()); 
LG
__________________
Keine Zahl != ein Zeichen das keine Zahl ist

Geändert von hausl (25.11.2011 um 12:49 Uhr).
hausl ist offline   Mit Zitat antworten
Alt 25.11.2011, 12:30  
Neuer Benutzer
 
Registriert seit: 24.11.2011
Beiträge: 13
PHP-Kenntnisse:
Anfänger
nsm_c befindet sich auf einem aufstrebenden Ast
Standard

ja da war ich schon drauf... bin das auch am durchlesen und aber kann das nicht so auf mein Problem abwälzen
nsm_c ist offline   Mit Zitat antworten
Alt 25.11.2011, 12:32  
Neuer Benutzer
 
Registriert seit: 24.11.2011
Beiträge: 13
PHP-Kenntnisse:
Anfänger
nsm_c befindet sich auf einem aufstrebenden Ast
Standard

jeder kann nur 1 mal bestellen.
nsm_c ist offline   Mit Zitat antworten
Alt 25.11.2011, 12:38  
Neuer Benutzer
 
Registriert seit: 24.11.2011
Beiträge: 13
PHP-Kenntnisse:
Anfänger
nsm_c befindet sich auf einem aufstrebenden Ast
Standard

wenn das meine Abfrage wäre

PHP-Code:
    ("SELECT * FROM orders
    LEFT JOIN PRIMARY on title.products = PRIMARY.products
    LEFT JOIN PRIMARY on name.users = user_id.users"

schreibe ich dann dennoch einfach in die Ausgabe $row['title']; zb.?
nsm_c ist offline   Mit Zitat antworten
Alt 25.11.2011, 12:38  
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

was ist denn das für ein Blödsinn ? Schneeballsystem ? .. normal sollte man als OnlineShop doch auf Bestandskunden "hoffen" ... wieso kann man bei dir nur ein einziges Mal bestellen ? oder liegt das auch an deinem verkorksten Datenbankdesign

das was du theroetisch brauchst wäre group_concat .. ich kann dir aus Normalisierungsgründen wirklich nur davon abraten, das direkt so zu benutzen

Mach lieber eine Abfrage mit expliziten Joins , nicht deine Implizite Abfrage - dann kannst du schön Zeilenweise die Produkte auslesen, samt bestellter Anzahl und Einzelpreis - die beiden Informationen kann man dann auch noch verwenden, um den Gesamtpreis zu berechnen, fertig
__________________
"Irren ist männlich", sprach der Igel und stieg von der Drahtbürste
eagle275 ist offline   Mit Zitat antworten
Alt 25.11.2011, 12:50  
Neuer Benutzer
 
Registriert seit: 24.11.2011
Beiträge: 13
PHP-Kenntnisse:
Anfänger
nsm_c befindet sich auf einem aufstrebenden Ast
Standard

es dreht sich hierbei um ein wichtelsystem wo wir im feundeskreis machen. Da hat jeder die möglichkeit für denjenigen den er gezogen hat etwas zu bestellen. Also kein Shop oder sonstiges, sollte was kleines nichts aufwendiges werden. Es soll einfach Name, Email, und (wenn) 4 Produkte ausgegeben werden. damit man eine übersicht hat wer was bestellt.
nsm_c ist offline   Mit Zitat antworten
Alt 25.11.2011, 12:58  
Erfahrener Benutzer
 
Registriert seit: 03.08.2010
Beiträge: 1.140
PHP-Kenntnisse:
Anfänger
hausl wird schon bald berühmt werdenhausl wird schon bald berühmt werden
Standard

Zitat:
Zitat von nsm_c Beitrag anzeigen
wenn das meine Abfrage wäre

PHP-Code:
    ("SELECT * FROM orders
    LEFT JOIN PRIMARY on title.products = PRIMARY.products
    LEFT JOIN PRIMARY on name.users = user_id.users"

schreibe ich dann dennoch einfach in die Ausgabe $row['title']; zb.?
Du bekommst die Felder zurück die Du mit SELECT angibst...

Daher auch:
http://www.php.de/wiki-php/index.php...lls#SELECT_.2A

Lass Dir ansonsten die query direkt mal ohne PHP auf/in der DB ausgeben (zB phpMyAdmin) dann kannst Du genau sehen was von der DB kommt und "wie die heissen".

LG
__________________
Keine Zahl != ein Zeichen das keine Zahl ist
hausl ist offline   Mit Zitat antworten
Alt 25.11.2011, 12:58  
Neuer Benutzer
 
Registriert seit: 24.11.2011
Beiträge: 13
PHP-Kenntnisse:
Anfänger
nsm_c befindet sich auf einem aufstrebenden Ast
Standard

also der Leftjoin funktioniert jetzt, aber nur auf Product_id_0 ... habe ja noch iD_1 , id_2 und id_3

da bei mir in der Tabelle "orders" die ProduktIDs mit "product_id_0, product_id_1 usw." angegeben sind... wie bekomme ich die Namen für ID_1-3 raus ohne das mir ein Fehler angezeigt wird das products.productID nicht unique ist


die Syntax

LEFT JOIN products on products.PRIMARY = orders.present_id_0 && orders.present_id_1 && orders.present_id_2 && orders.present_id_3

gibt mir zwar keinen fehler zurück, aber auch nur den Namen und alles von present_id_0

Geändert von nsm_c (25.11.2011 um 13:05 Uhr).
nsm_c ist offline   Mit Zitat antworten
Alt 25.11.2011, 14:04  
Neuer Benutzer
 
Registriert seit: 24.11.2011
Beiträge: 13
PHP-Kenntnisse:
Anfänger
nsm_c befindet sich auf einem aufstrebenden Ast
Standard

Kann mir da jemand helfen? oder ist das so wie ichs möchte NICHT möglich?
nsm_c 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] JOIN über 3 Tabellen + 2 m:n Tabellen dennis81 Datenbanken 7 08.12.2010 15:36
Datenbankabfrage über 3 Tabellen typhoch2 Datenbanken 2 05.12.2010 22:08
[Erledigt] SELECT über zwei Tabellen (INNER JOIN) und Ausgabe von verglichener a_i ID MeckiDerIgel Datenbanken 6 09.11.2010 01:31
Abfrage von 3 Tabellen über odbc?! pfump Datenbanken 11 27.10.2010 08:58
[Erledigt] Problem mit Spaltennamen bei UNION über 2 Tabellen Lollix Datenbanken 5 04.07.2010 15:30
[Erledigt] Intertabellarische Berechnungen, wie? dave303 Datenbanken 13 05.03.2010 11:58
[Erledigt] Select über zwei Tabellen / Performanceproblem Wolla Datenbanken 20 15.06.2008 00:58
Update über zwei Tabellen tekknotrip Datenbanken 2 26.02.2007 16:25
Abfrage über 3 Tabellen madSoul Datenbanken 5 26.06.2006 12:25
Select über zwei Tabellen danix-dj PHP Tipps 2006 11 22.05.2006 15:13
Ausgabe der Verknüpften tabellen über php skript PHP Tipps 2006 4 07.02.2006 15:04
Select über mehrere tabellen Sclot Datenbanken 14 24.11.2005 16:56
select über drei Tabellen Sonja PHP Tipps 2005 10 12.05.2005 14:27
sql über 2 tabellen PHP Tipps 2005 2 25.04.2005 21:26
SELECT über 4 Tabellen mit DISTINC PHP Tipps 2005 2 08.03.2005 19:50

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
select über 3 tabellen

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