2 variabelen in while lus
Code (php)
1
2
3
4
5
2
3
4
5
<?php
while($arr1 = mysql_fetch_array($res1) AND $arr2 = mysql_fetch_array($res2)) {
}
?>
while($arr1 = mysql_fetch_array($res1) AND $arr2 = mysql_fetch_array($res2)) {
}
?>
Ik wil namelijk 2 waarden uit 2 tabellen halen en die met elkaar vergelijken, maar het lukt me niet...
Ik neem aan dat er een verband zit tussen de data, anders valt er toch al niets te vergelijken...
Heb je een voorbeeldje..?
Sven schreef op 14.08.2007 14:49:
Heb je een voorbeeldje..?
Een voorbeeld waarvan? Van een vergelijking? Zie de handleiding van jouw database of duik even in de SQL-boeken.
En ik heb nu even geen sql-boeken bij de hand, en het internet is op dit gebied zo een oerwoud dat je door de bomen het bos niet meer kunt zien...
link
Ps. Ik kan niet raden waar jij mee bezig bent en wat een passend voorbeeld zou kunnen zijn. Ik neem aan dat je met de WHERE in SQL kunt omgaan...
Wanneer je dat oerwoud even beperkt tot de tutorials op phphulp, dan ben zo klaar: Ps. Ik kan niet raden waar jij mee bezig bent en wat een passend voorbeeld zou kunnen zijn. Ik neem aan dat je met de WHERE in SQL kunt omgaan...
Ik snap het laatste gedeelte van de JOIN, de ON niet...
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
$res = mysql_query("
SELECT
kw_comb_table.id AS comb_id,
kw_comb_table.kw1 AS comb_kw,
kw_comb_table.alias AS comb_alias,
kw_table.id AS kw_id,
kw_table.kw AS kw_kw,
kw_table.alias AS kw_alias
FROM
kw_comb_table, kw_table
JOIN
kw_table
ON
comb_kw = kw_kw
WHERE
comb_alias = kw_alias
");
?>
$res = mysql_query("
SELECT
kw_comb_table.id AS comb_id,
kw_comb_table.kw1 AS comb_kw,
kw_comb_table.alias AS comb_alias,
kw_table.id AS kw_id,
kw_table.kw AS kw_kw,
kw_table.alias AS kw_alias
FROM
kw_comb_table, kw_table
JOIN
kw_table
ON
comb_kw = kw_kw
WHERE
comb_alias = kw_alias
");
?>
dit is niet goed, iemand een idee hoe het wel moet?
Gewijzigd op 01/01/1970 01:00:00 door Sven
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?
$query = "
SELECT
kw_comb_table.id AS comb_id,
kw_comb_table.kw1 AS comb_kw,
kw_comb_table.alias AS comb_alias,
kw_table.id AS kw_id,
kw_table.kw AS kw_kw,
kw_table.alias AS kw_alias
FROM
kw_comb_table
JOIN kw_table ON kw_comb_table.comb_kw = kw_table.kw_kw
";
?>
$query = "
SELECT
kw_comb_table.id AS comb_id,
kw_comb_table.kw1 AS comb_kw,
kw_comb_table.alias AS comb_alias,
kw_table.id AS kw_id,
kw_table.kw AS kw_kw,
kw_table.alias AS kw_alias
FROM
kw_comb_table
JOIN kw_table ON kw_comb_table.comb_kw = kw_table.kw_kw
";
?>
1) Wat een onmogelijke tabel- en kolomnamen heb je verzonnen! Geen touw aan vast te knopen. Een tabelnaam geef je NOOIT de naam table o.i.d., het lijkt mij logisch dat een tabel een tabel is. Verzin betere namen, dit is echt rampzalig.
2) Met de ON geef jij aan welke kolommen met elkaar zijn verbonden. Daar waar kw_comb_table.comb_kw dezelfde waarde bevat als kw_table.kw_kw, horen de gegevens bijelkaar. Daar heb je dus geen WHERE voor nodig.
3) Wellicht zijn er nog andere voorwaarden die niets met de koppeling tussen 2 tabellen hebben te maken, die neem je op in de WHERE-clausule.
Gewijzigd op 01/01/1970 01:00:00 door Frank -
Bedankt voor de reactie.
1) De tabelnamen heb ik zo gemaakt, dat ik ze begrijp, maar dat iemand anders er geen touw aan vast kan knopen.. ;)
Anders gaat mn idee naar de haaien.
2) Bedankt, wilde ik weten
3) Daar ga ik nu over nadenken
Gewijzigd op 01/01/1970 01:00:00 door Sven
Quote:
Ik hoop voor jou dat dit over een aantal maanden nog steeds zo is...De tabelnamen heb ik zo gemaakt, dat ik ze begrijp
Ga geen geheimtaal in je code gebruiken, dat kost je extra tijd en bugs. Hopelijk was dit slechts een voorbeeldje om op het forum te plaatsen.
probeer het es luie donder
Ps. Hoe heb jij de foreignkey's ingesteld?
$res = mysql_query("
SELECT
kw_comb_table.id AS comb_id,
kw_comb_table.kw1 AS comb_kw,
kw_comb_table.alias AS comb_alias,
kw_table.id AS kw_id,
kw_table.kw AS kw_kw,
kw_table.alias AS kw_alias
FROM
kw_comb_table
JOIN
kw_table
ON
kw_comb_table.comb_kw = kw_table.kw_kw,
kw_comb_table.comb_alias = kw_table.kw_alias
");
$numRows = mysql_num_rows($res);
resulteert in dit:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in **** on line 60
P.S. foreignkeys?
Gewijzigd op 01/01/1970 01:00:00 door Sven
Maar heb je al eens bedacht waarom je deze constructie nodig hebt? Leg eens uit waar je mee bezig bent, met bovenstaande query kan ik me echt niks voorstellen. Het geven van hulp wordt er dus niet eenvoudiger op...
Ps. Je moet in de ON wel aliassen gaan gebruiken, anders gaat fout bij dubbel gebruik van een tabelnaam. Dat zal hier ook het geval zijn.
maar ik zal even uitleggen
ik haal gegevens van een site, die zet ik in een string in een tabel, daarna split ik de string en zet deze in ee nvolgende tabel, met combinaties van de gegevens (ik haal 1,2 en 3 op, en in de database krijg ik dus dit: 1|1, 1|2, 1|3, 2|1, 2|2, 2|3, enz.. (| is scheiding tusse n2 kolommen))
daarna wil ik dubbele combinaties er uit filteren, wat me al is gelukt, en nu wil ik dus kijken of er een paar van die combinaties al bestaan in de volgende tabel, wat me dus niet echt lukt...
Snap je het? :P
Gewijzigd op 01/01/1970 01:00:00 door Sven
Gewijzigd op 01/01/1970 01:00:00 door - wes -
kan ik het nog verder splitten dan voor elk deel 1 tabel dan?
dan wordt het pas ingewikkeld...
Gewijzigd op 01/01/1970 01:00:00 door Sven
Maar.. ik weet nog steeds niet hoe ik het moet oplossen en ik zou het graag voor 5 uur af hebben.. :)
Wanneer je niet weet wat fk's zijn, dan kun je beter eens in de boeken gaan duiken om die kennis alsnog op te doen. Dit is namelijk precies waar je nu mee bezig bent en waar je blijkbaar geen touw aan vast kunt knopen.
Het datamodel is mij trouwens nog steeds niet 100% duidelijk, 'een volgende tabel' klinkt mij wat vaag in de oren, dit bestaat niet in een goede opzet. Het is altijd heel specifiek in bv. tabel A en tabel B komen de gegevens X, Y en Z te staan. 'een volgende tabel' is niet specifiek en voor mij onduidelijk.
Ik ben bang dat ik je niet verder kan helpen.
Het gaat maar om het controleren...
Dus SELECT * FROM kw_comb_table, en SELECT * FROM kw_table, en die daarna met elkaar vergelijk?