php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 02.08.2009, 10:58  
Neuer Benutzer
 
Registriert seit: 17.07.2009
Beiträge: 7
PHP-Kenntnisse:
Anfänger
rassamee befindet sich auf einem aufstrebenden Ast
Standard Abfrage über 2 Tabellen

Habe 2 Tabellen..

=======================
TABELLE tbl_abh
_______________________

abh_id (Primärschlüssel)
abh_leid
abh_lename
abh_abhid

=======================


=======================
TABELLE tbl_le
_______________________

le_id (Primärschlüssel)
le_name

=======================

Angezeigt werden sollen:
- alle Einträge der TABELLE tbl_le welche NICHT die gleiche le_id tragen die in der TABELLE tbl_abh unter abh_abhid stehen.

Ich bitte um Hilfe, probiere bereits seit Stunden herum und komme nicht weiter.

Hier mein Code bis jetzt.

PHP-Code:
$result mysql_query("SELECT * FROM tbl_abh WHERE abh_leid = '"mysql_escape_string$_GET['id'] ) ."'");
while(
$row mysql_fetch_array($result))
{    
                                            
    
$erg mysql_query("SELECT * FROM tbl_le WHERE le_id != $row[abh_abhid]");

    while (
$dataset mysql_fetch_array($erg))                                         
    {                        
    echo 
"<b>";
    echo 
$dataset['le_id'];
    echo 
"-";
    echo 
$dataset['le_name'];
    echo 
"<br>";
    
    }

Als Resultat erhalte ich eine lange sich wiederholende Liste der Einträge der Tabelle tbl_le. Es dürfte wohl mit der Schleife zu tun haben.

Als Alternative habe ich die Zeile
PHP-Code:
$erg mysql_query("SELECT * FROM tbl_le WHERE le_id != $row[abh_abhid]"); 
auch schon mal durch
PHP-Code:
$erg mysql_query("SELECT * FROM tbl_le WHERE le_id = $row[abh_abhid]"); 
(=) ersetzt, dann kommen die identen Einträge. Ich möchte aber die Einträge welche NICHT gleich sind.
Vielen Dank für die Unterstützung.
rassamee
rassamee ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 02.08.2009, 11:09  
Moderator
 
Benutzerbild von Asipak
 
Registriert seit: 18.07.2005
Beiträge: 4.072
Asipak sorgt für eine eindrucksvolle AtmosphäreAsipak sorgt für eine eindrucksvolle Atmosphäre
Standard

Morgen,

MySQL Vergleich auf Ungleich:

Code:
`spalte` <> 'value'
Code:
$row[abh_abhid]
bitte durch
Code:
$row["abh_abhid"]
ersetzen. Array-Indizes gehören in Anführungszeichen oder Hochkommas!

Gruß
Asipak ist offline  
Alt 02.08.2009, 12:25  
Neuer Benutzer
 
Registriert seit: 17.07.2009
Beiträge: 7
PHP-Kenntnisse:
Anfänger
rassamee befindet sich auf einem aufstrebenden Ast
Standard

Besten Dank für den Input. Habe den Code auf VERGLEICH <> geändert und auch die Hochkommas ersetzt.
Das Ergebnis ist aber immer noch eine 3malige Anzeige der Daten.
Zur Verdeutlichung habe ich einen Screenshot eingefügt, damit man die Ausgabe sieht.

http://www.medialinks.ch/screenshot.pdf

Folgender Code ist jetzt vorhanden:
PHP-Code:
$result mysql_query("SELECT * FROM tbl_abh WHERE abh_leid = '"mysql_escape_string$_GET['id'] ) ."'");
while(
$row mysql_fetch_array($result))
{    
echo 
"---<br>";                                            
    
$erg mysql_query("SELECT * FROM tbl_le WHERE le_id <> '"$row['abh_abhid'] ."'");

    while (
$dataset mysql_fetch_array($erg))                                         
    {                        
    echo 
"<b>";
    echo 
$dataset['le_id'];
    echo 
"-";
    echo 
$dataset['le_name'];
    echo 
"<br>";
    
    }
}

?> 
Vielen Dank für die Hilfe.
Gruss
rassamee
rassamee ist offline  
Alt 02.08.2009, 13:11  
Moderator
 
Benutzerbild von Asipak
 
Registriert seit: 18.07.2005
Beiträge: 4.072
Asipak sorgt für eine eindrucksvolle AtmosphäreAsipak sorgt für eine eindrucksvolle Atmosphäre
Standard

Du hast also 3 Einträge, die aus einer Menge wegfallen sollen?


Vielleicht so?
PHP-Code:
$sql "SELECT
              *
        FROM
              tbl_le
        WHERE
              le_id <> " 
$id1 "
        AND
              le_id <> " 
$id2 "
        AND
              le_id <> " 
$id3
;

$erg mysql_query($sql); 
Asipak ist offline  
Alt 02.08.2009, 13:17  
Neuer Benutzer
 
Registriert seit: 17.07.2009
Beiträge: 7
PHP-Kenntnisse:
Anfänger
rassamee befindet sich auf einem aufstrebenden Ast
Standard

Hallo Asipak,
danke für den Tipp, aber in diesem Beispiel sind es diese 3 ID3's - in einem anderen Fall sind es andere ID's. Das ganze muss dynamisch funktionieren. Vielleicht ist ja der Fehler in der Schleife.

Ich habe auch etwas gelesen über 'JOIN' - wenn man Abfragen über 2 Tabellen machen möchte.
Habe da aber keinen Durchblick...

Gruss
rassamee
rassamee ist offline  
Alt 02.08.2009, 15:38  
Erfahrener Benutzer
 
Benutzerbild von jw-lighting
 
Registriert seit: 25.03.2009
Beiträge: 126
PHP-Kenntnisse:
Fortgeschritten
jw-lighting befindet sich auf einem aufstrebenden Ast
jw-lighting eine Nachricht über ICQ schicken
Standard

Sowas?

Code:
SELECT tbl_le.* FROM tbl_le, tbl_abh WHERE tbl_le.le_id <> tbl_abh.abh_abhid
__________________
jw-lighting ist offline  
Alt 02.08.2009, 17:35  
Erfahrener Benutzer
 
Registriert seit: 03.06.2009
Beiträge: 140
PHP-Kenntnisse:
Anfänger
thomasE befindet sich auf einem aufstrebenden Ast
Standard

@jw-lighting, dein query dürfte wieder doppelte Einträge erzeugen, es fehlt wenigstens ein distinct

und ich glaube, in diesem fall ist ein sub-select besser
Code:
SELECT 
	*
FROM 
	tbl_le
WHERE 
	le_id NOT IN (
		SELECT abh_leid
		FROM tbl_abh
	)
thomasE ist offline  
Alt 02.08.2009, 17:51  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
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

Imho reicht da ein ganz normaler JOIN abh_leid auf tbl_le. Der macht in diesem Falle das gleiche wie ein Subselect.
Auf jeden Fall ist zu vermeiden, in Schleifen weitere Queries abzusetzen.
__________________
--
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 02.08.2009, 17:56  
Neuer Benutzer
 
Registriert seit: 17.07.2009
Beiträge: 7
PHP-Kenntnisse:
Anfänger
rassamee befindet sich auf einem aufstrebenden Ast
Standard

Besten Dank für Eure Antworten, aber ich bekomme das irgendwie nicht hin.

@nikosch: Könntest Du mir bitte mal in Form eines Codes zeigen, wie man so einen JOIN macht?

Bis jetzt habe ich ja diesen Code:
PHP-Code:
$result mysql_query("SELECT * FROM tbl_abh WHERE abh_leid = '"mysql_escape_string$_GET['id'] ) ."'"); 
while(
$row mysql_fetch_array($result)) 
{     
echo 
"---<br>";                                             
    
$erg mysql_query("SELECT * FROM tbl_le WHERE le_id <> '"$row['abh_abhid'] ."'"); 

    while (
$dataset mysql_fetch_array($erg))                                          
    {                         
    echo 
"<b>"
    echo 
$dataset['le_id']; 
    echo 
"-"
    echo 
$dataset['le_name']; 
    echo 
"<br>"
     
    } 

Ich denke ich habe bei der Ausgabe der beiden Schleifen ein Problem.
Vielen Dank,
rassamee
rassamee ist offline  
Alt 02.08.2009, 18:38  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
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

Ja, das koennte ich. Ich halte es aber für besser, wenn Du Dich über JOINS informierst und die Anwendung lernst. Wie oben gesagt, verschachtelte Schleifen solltest Du vermeiden.
__________________
--
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  
 


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] SQL Abfrage über 2 Tabellen, wenn eine davon leer ist Registrierer Datenbanken 13 18.05.2009 20:48
MySQL Abfrage über 5 Tabellen evtl. IF ghost120 Datenbanken 11 13.04.2009 20:00
Query über mehrere Tabellen ph|L Datenbanken 3 07.04.2009 14:26
sortierung einer Abfrage über 2 Tabellen mchacka Datenbanken 2 17.03.2009 17:55
SELECT über zwei Tabellen KingCrunch Datenbanken 9 23.03.2007 04:01
Update über zwei Tabellen tekknotrip Datenbanken 2 26.02.2007 16:25
MySQL Abfrage über 2 Tabellen Datenbanken 4 21.03.2006 11:44
Abfrage über zwei Tabellen (m. JOIN?) Spiff Datenbanken 3 13.02.2006 09:32
Query über 3 Tabellen? jensK Datenbanken 4 12.01.2006 08:44
Abfrage mehrerer Tabellen per PHP (Code vereinfachen) PHP Tipps 2007 4 18.12.2005 12:34
Select über mehrere tabellen Sclot Datenbanken 14 24.11.2005 16:56
[Erledigt] mysql abfrage über 4 Tabelle - bis 3 geht, bei der 4. habert Datenbanken 2 08.09.2005 11:59
Mysql Abfrage über 3 Tabellen in Verbidung mit COUNT() PHP Tipps 2005-2 4 28.06.2005 07:47
Mysql Abfrage über 2 Tabellen mit Verknüpfung zuner 3. Datenbanken 2 26.10.2004 16:36
Abfrage über 3 Tabellen Datenbanken 3 20.09.2004 08:08


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