php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2010

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 12.06.2010, 18:09  
apo
Neuer Benutzer
 
Registriert seit: 31.05.2010
Beiträge: 10
PHP-Kenntnisse:
Fortgeschritten
apo befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] Frage zu JOIN Befehl und dem Auslesen desselben

Hi,

ich hätt noch einmal eine frage zum JOIN Befehl -

folgenden Befehl habe ich

PHP-Code:
$sql " SELECT * FROM sa_page_text INNER JOIN ( sa_page_code, sa_page_links) ON (sa_page_code.pageid = $pid AND sa_page_links.pageid = $pid) WHERE sa_page_text.pageid = $pid "
Das klappt soweit ganz gut, nur würde ich die sich daraus ergebenden zeilen auch ordnen, was über die column "position", die jede der 3 gejointen tabellen besitzt, funktionieren soll.
D.h. jeder Datensatz hat eine zugewiesene Nummer die sich geordnet durchzieht (nicht den primary-key) im feld "position".

ein normales "ORDER BY position DESC" geht aber nicht, da er ausgibt, die Column "position" wäre "ambiguous", also mehrdeutig.

Daher stellt sich die Frage, ob ich das Problem durch eine kleine Änderung beheben kann, oder die Datenbankstrukur verändern muss.

Die zweite Frage ist wie folgt:

Lese ich nun die sich daraus ergebende Tabelle mit einer While Schleife aus, bekomme ich zwar ein Ergebnis, nur gibt er mir statt der z.B.: 5 Zeilen dann 12 aus (also mehrere doppelt & dreifach).
Ist es überhaupt möglich eine SQL JOIN Abfrage in einer WhileSchleife auszulesen?

Code hierzu wäre
PHP-Code:
$select_query mysql_query($sql);

while (
$select_array mysql_fetch_array($select_query)) {

    
$type $select_array['type'];

      if ( 
$type "text" ) {
          include(
'templates/block_templates/text.php');
      }

      if ( 
$type "links" ) {
          include(
'templates/block_templates/links.php');
      }

      if (
$type "code" ) {
          include(
'templates/block_templates/code.php');
      } 
(Er soll also je nach typ - Link, Text, oder Code - eine andere Datei einbinden bis die Zeilen abgearbeitet sind)
apo ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 12.06.2010, 21:31  
Erfahrener Benutzer
 
Registriert seit: 13.05.2009
Beiträge: 1.166
PHP-Kenntnisse:
Fortgeschritten
dennis81 befindet sich auf einem aufstrebenden Ast
Standard

Zu Frage 1) Wenn du gleichnamige Attribute hast, dann musst du diese über den Tabellennamen referenzieren, hier kannst du für Tabellen auch Aliase wählen. In deinem Fall z.B. sa_page_code.position

Zu Frage 2) PHP ist es völlig schnurz durch welchen SQL Befehl die Daten kommen. Wenn du 12 Zeilen hast aber nur 5 erwartet hast, wirst du vermutlich einen falschen Query zusammen gebaut haben. Ich persönlich habe noch nie ein JOIN in der Form JOIN (tabelle1, tabelle2) gesehen. Vielleicht tüftelst du da noch mal dran rum. Außerdem führt z.B. ein INNER JOIN auch dazu, dass JEDER Datensatz aus der Tabelle auf der linken Seite angezeigt wird, egal, ob es in der rechten Tabelle einen entsprechenden, über ON verglichenen Datensatz gibt. Und da weiß ich noch viel weniger, wie sich deine Art des JOINS verhält.
__________________
Es ist schon alles gesagt! Nur noch nicht von allen! (Karl Valentin)
Wenn du eine weise Antwort verlangst, musst du vernünftig fragen. (Johann Wolfgang von Goethe)
dennis81 ist gerade online  
Alt 12.06.2010, 23:28  
Erfahrener Benutzer
 
Registriert seit: 14.10.2007
Beiträge: 306
PHP-Kenntnisse:
Fortgeschritten
Papst befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von dennis81 Beitrag anzeigen
[...] z.B. ein INNER JOIN auch dazu, dass JEDER Datensatz aus der Tabelle auf der linken Seite angezeigt wird, egal, ob es in der rechten Tabelle einen entsprechenden, über ON verglichenen Datensatz gibt. [...]
Die Form habe ich auch noch nicht gesehen, jedoch selektiert MySQL nur dann einen Eintrag mit INNER JOIN, wenn zu diesem eine entsprechung in jeder mit INNER JOIN gejointen Tabelle gefunden wird.
Papst ist offline  
Alt 13.06.2010, 01:50  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.990
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Er meint wohl nen LEFT JOIN
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
Alt 13.06.2010, 08:45  
Erfahrener Benutzer
 
Registriert seit: 10.02.2009
Beiträge: 929
ragtek ist ein sehr geschätzer Menschragtek ist ein sehr geschätzer Menschragtek ist ein sehr geschätzer Menschragtek ist ein sehr geschätzer Mensch
Standard

Ähm schau dir mal deine IF Teile an
PHP-Code:
 if ( $type "text" ) {
          include(
'templates/block_templates/text.php');
      }

      if ( 
$type "links" ) {
          include(
'templates/block_templates/links.php');
      }

      if (
$type "code" ) {
          include(
'templates/block_templates/code.php');
      } 
fällt dir da nichts auf?
ragtek ist offline  
Alt 13.06.2010, 12:51  
Erfahrener Benutzer
 
Benutzerbild von Ti-Systems
 
Registriert seit: 06.10.2008
Beiträge: 240
PHP-Kenntnisse:
Fortgeschritten
Ti-Systems befindet sich auf einem aufstrebenden Ast
Ti-Systems eine Nachricht über ICQ schicken Ti-Systems eine Nachricht über MSN schicken
Standard

Hallo,

Bei einem Vergleich musst du doppelte Gleichheitszeichen (==) verwenden, da sonst eine Zuweisung in der Bedingung der if statt findet, was zur Folge hat, dass die Bedingung immer "true" ist.

mfg Timo
Ti-Systems ist offline  
Alt 13.06.2010, 13:11  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.990
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Debugging:Standardfehler - PHP.de Wiki
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
Alt 13.06.2010, 15:25  
apo
Neuer Benutzer
 
Registriert seit: 31.05.2010
Beiträge: 10
PHP-Kenntnisse:
Fortgeschritten
apo befindet sich auf einem aufstrebenden Ast
Standard

Danke erstmal für die Ratschläge und Links - das mit dem "==" ist ja peinlich :S

Zu
Zitat:
Zitat von dennis81 Beitrag anzeigen
Zu Frage 1) Wenn du gleichnamige Attribute hast, dann musst du diese über den Tabellennamen referenzieren, hier kannst du für Tabellen auch Aliase wählen. In deinem Fall z.B. sa_page_code.position
Das wäre mir klar, aber ich habe die 3 Tables sa_page_text, -links, -code und in jeder dieser, die spalte position in der sich eine fortlaufende nummer befindet.

d.h. in sa_page_text befindet sich die zeile mit position 1, in links die nummer 2 & in code die nummer 3 - und danach soll er ordnen


Und dann noch eine Frage zum JOIN - ist in diesem fall ein INNER oder LEFT JOIN besser?
apo ist offline  
Alt 13.06.2010, 15:43  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.990
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Das kommt darauf an, welches Ergebnis man erreichen will. Was ist besser auf dem Kuchen - Kirschen oder Erdbeeren?
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
Alt 13.06.2010, 17:20  
apo
Neuer Benutzer
 
Registriert seit: 31.05.2010
Beiträge: 10
PHP-Kenntnisse:
Fortgeschritten
apo befindet sich auf einem aufstrebenden Ast
Standard

ok, ich habe mein problem mit dem join gelöst - denn es war der JOIN an sich

Verwende nun einfach eine SELECT Abfrage mit UNION, hierzu aber noch eine letzte frage;

ist es irgendwie möglich, dass die Felder in den 3 verschiedenen tables verschiedene namen haben und ich sie trotzdem aufrufen kann??
apo 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
Frage zu Join xiled PHP Tipps 2009 1 05.01.2009 10:37
[Erledigt] Frage zum Befehl: nl2br($variable) SilverVegeto PHP Tipps 2008 3 12.11.2008 19:37
[Erledigt] Fsockopen() Frage Auslesen von Daten Quedepi PHP Tipps 2008 9 23.05.2008 11:24
Frage zu meinem JOIN Statement Benjamin Such Datenbanken 4 12.04.2008 13:20
JOIN / LEFT JOIN und Co prinzli Datenbanken 12 05.11.2007 22:15
Frage wegen Join Verknüpfung Bruno Datenbanken 8 08.12.2006 11:17
Kurze Frage: Nicht exakte ID sondern Reihenfolge auslesen. PHP Tipps 2006 17 10.03.2006 20:51
kurze frage zu txt auslesen PHP Tipps 2006 18 12.01.2006 19:22
Frage zum Auslesen aus einer Mysql DB djma PHP Tipps 2005 3 18.05.2005 12:35
Wichtige Frage zum auslesen der letzten Beiträge PHP Tipps 2005 54 23.04.2005 13:16
Frage zu ORDER BY Anweisung in SQL Befehl suendesizer PHP Tipps 2005 9 11.02.2005 12:26
Frage gibt es einen befehl "und"?!? PHP Tipps 2004-2 3 25.11.2004 18:32
[Erledigt] kleine inner join frage... PHP-Fortgeschrittene 3 02.11.2004 22:02
Frage - Befehl für Zahlen dazwischen???? Datenbanken 10 21.10.2004 13:52
Join Frage Datenbanken 5 05.08.2004 11:22

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
inner join php nur auslesen, php join befehl, php tabellen mit inner join auslesen, join auslesen, php join, inner join ergebnisse auslesen, join befehl, inner join daten auslesen, join php befehl, inner join answeisung auslesen php, php join auslesen, sql inner join auslesen, mphp join befehle, php befehl join, sql joins auslesen php, join php auslesen, join behel php, sql befehl join php, joinbefehl cod, php while sql join

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