SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Das Zend Framework

Das Zend Framework zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > MySQLi/PDO/(MySQL)
Hilfe Community Kalender Heutige Beiträge Suchen

MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 25.11.2005, 13:19:15
Franzx Franzx ist offline
Junior Member
 
Registriert seit: Nov 2005
Ort: Bremen
Beiträge: 437
Abfrage LEFT JOIN verdreht die Plausibilitäten

... habe Verständnisproblem??

Folgende Abfrage erzeugt die richtige Datenmenge und die nötigen Plausibilitäten werden über PHP abgefragt. Es funktioniert soweit.
$result = mysql_query("SELECT * FROM tbl1, tbl2 WHERE tbl1.Wert = tbl2.Wert AND tbl1.Wert2 >= '".$_POST['AUSWAHL']."' ORDER BY tbl1.Wert LIMIT 50") or die(mysql_error());
while($row = mysql_fetch_array($result)){...

Nun ist es aber so, dass eine 3te tbl abgefragt werden muss, ob eine entsprechende ID vorhanden ist. Wenn ja soll diese mit dem Datensatz der beiden anderen DB verbunden und ausgegeben werden.
Benutze ich nun folgende Anweisung werden die Plausis, die per PHP geprüft werden, verändert.

$result = mysql_query("SELECT * FROM tbl1, tbl2 LEFT JOIN tbl3 ON ('tbl1.ID' = 'tbl3.ID') WHERE tbl1.Wert = tbl2.Wert AND tbl1.Wert2 >= '".$_POST['AUSWAHL']."' ORDER BY tbl1.Wert LIMIT 50") or die(mysql_error());
while($row = mysql_fetch_array($result)){...

Was mache ich falsch?

cu,
Franzx

Geändert von Franzx (25.11.2005 um 13:36:46 Uhr) Grund: war zu schnell
Mit Zitat antworten
  #2  
Alt 06.12.2005, 09:23:45
Franzx Franzx ist offline
Junior Member
 
Registriert seit: Nov 2005
Ort: Bremen
Beiträge: 437
AW: Abfrage LEFT JOIN verdreht die Plausibilitäten

Neuer Lösungsversuch:

$result = mysql_query("SELECT * FROM tbl1, tbl2, tbl3 WHERE tbl1.cnt = tbl3.cnt AND tbl1.id >= '".$_POST['BLOCKAUSWAHL']."' GROUP BY tbl1.id LIMIT 50") or die(mysql_error());

Aus tbl1, tbl2 werden alle Felder richtig ausgegeben. tbl1 und tbl2 haben die gleiche Anzahl von Zeilen und jede ID ist in jeder der beiden tbl vorhanden, also eine einfache Standardabfrage.

In tbl3 allerdings gibt es nur wenige Datensätze, die allerdings, sofern vorhanden auch über die eindeutige id zuordenbar sind.

Leider gibt nun aber der query nur die Infos aus dem ersten gefundenen Datensatz, sprich die id aus allen drei tbl ist gleich, aus der tbl3 zurück und wiederholt diesen für jeden weiteren Datensatz

Also es werden schon alle vorhandene Datensätze ausgegeben, doch aus tbl3 nur der erst gefundene und dieser wird dann fälschlicherweise mit den sonst übereinstimmenden id's verknüpft.
INNER Join hilft mir dabei nicht weiter, da dann nur die Datensätze aus entweder oder ausgegeben werden.
LEFT Join hilft nicht weiter, da da zwar in der Anzahl der Datensätze alles richtig ist, es werden allerdings keine Werte übermittelt, ich meine {$row['Wert_aus_tbl3']} ist leer.

Hat jemand eine Idee.
Gruß,
Franzx
Mit Zitat antworten
  #3  
Alt 06.12.2005, 10:09:20
Benutzerbild von xabbuh
xabbuh xabbuh ist offline
SELFPHP Guru
 
Registriert seit: May 2003
Beiträge: 7.187
AW: Abfrage LEFT JOIN verdreht die Plausibilitäten

Könntest du mal die Strukturen der drei Tabellen und ein paar Beispieldatensätze zeigen und dann daran erklären, wie das Ergebnis deiner Abfrage aussehen soll?
Mit Zitat antworten
  #4  
Alt 06.12.2005, 10:52:55
Franzx Franzx ist offline
Junior Member
 
Registriert seit: Nov 2005
Ort: Bremen
Beiträge: 437
AW: Abfrage LEFT JOIN verdreht die Plausibilitäten

... tbl1 hat 40 Felder - überwiegend Datumsfelder
Feld1 = ID [varchar]; Feld2 = Produktbeschreibung [longtext]; Feld3 = cnt [smallint]; danach Datumsfelder die sich nur im Feldnamen unterscheiden wie Einkauf; Preisänderung; Preisänderung2; Preisänderung3; Produkterneuerung; ...

tbl2 hat 3 Felder
Feld1 = cnt[int]; Feld2 = Hersteller [char255]; Feld3 = Gebiet [char50]

tbl3 ist wie die tbl1 aufgebaut beinhaltet aber einfach nur spezielle Produkte die nur dann in Frage kommen wenn eben in der Tabelle 1 kein Produkt, nur 1 Produkt oder nur sehr alte Produkte zur Verfügung stehen.

Abgefragt wird der gesamte Datensatz aus allen Feldern. Bei dieser Abfrage wird schon geprüft, bzw. soll schon geprüft werden ob eben auch in tbl3 ein Wert eingetragen ist, damit gegebenenfalls auch diese Werte zur Verfügung stehen und ausgegeben werden sollen.
Ob letzendlich ein Datensatz angezeigt und welche Felder daraus angezeigt werden sollen, löse ich in PHP indem ich eben auf {!empty($row['datumsfeldx']} oder {empty($row['datumsfeld1']} abfrage.
Somit kann ich ein html-template verwenden und bestimme durch die Abfragen ob es angezeigt wird und was, welche Felder, angezeigt werden.
Mit Zitat antworten
  #5  
Alt 06.12.2005, 11:41:50
Benutzerbild von xabbuh
xabbuh xabbuh ist offline
SELFPHP Guru
 
Registriert seit: May 2003
Beiträge: 7.187
AW: Abfrage LEFT JOIN verdreht die Plausibilitäten

Versuch mal sowas:
Code:
SELECT
    ...
FROM
    tbl1
INNER JOIN
    tbl2
ON
    tbl1.cnt = tbl2.cnt
LEFT OUTER JOIN
    tbl3
ON
    tbl1.cnt = tbl3.cnt
Mit Zitat antworten
  #6  
Alt 06.12.2005, 12:19:59
Franzx Franzx ist offline
Junior Member
 
Registriert seit: Nov 2005
Ort: Bremen
Beiträge: 437
AW: Abfrage LEFT JOIN verdreht die Plausibilitäten

Phantastisch :-)

Es funktioniert!

Vielen Dank!

Gruß,
Franzx
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

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

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Left Join Vankin MySQLi/PDO/(MySQL) 1 16.11.2005 19:54:36
LEFT JOIN funtkioniert nicht richtig matthi80 MySQLi/PDO/(MySQL) 6 21.10.2005 14:21:26
SQL Abfrage (INNER JOIN) AlexWeber MySQLi/PDO/(MySQL) 6 08.10.2003 09:10:39
Ist left join für mich die richtige wahl? pfuchs PHP Grundlagen 1 29.09.2003 20:31:40
Brauch mal hilfe bei ner JOIN abfrage .. Mike105 PHP für Fortgeschrittene und Experten 25 09.04.2003 08:28:00


Alle Zeitangaben in WEZ +2. Es ist jetzt 08:37:54 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt